我有一个id,x,y值的表,我需要用posgresql中的函数来求两点之间的距离。
CREATE OR REPLACE FUNCTION distances(lat1 float, lon1 float, lat2 float, lon2 float)
RETURNS float AS $dist$
BEGIN
SELECT ST_Distance(
ST_GeogFromText('SRID=4326;POINT(lat1 lon1 )')
, ST_GeogFromText('SRID=4326;POINT(lat2 lon2)'), false);
END;
$dist$ LANGUAGE plpgsql;
但是当我传递值时会抛出错误:
请给我一个解决方案。
1条答案
按热度按时间1rhkuytd1#
有几件事:
您试图在没有
||
正确的顺序是lon-lat,而不是lat-lon你不需要函数。一个简单的查询
ST_Distance
功能就足够了但如果你为了其他目的需要它:
否则,此sql查询将执行以下操作:
干杯
进一步阅读:
ST_MakePoint
ST_SetSRID