[英]Using ST_Distance in a table
我有一個 id,x,y 值的表,我需要在 posgresql 中使用 function 找到兩點之間的距離。
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;
請給我一個sloution。
有幾件事:
||
的情況下連接字符串中的變量ST_Distance
function 的簡單查詢就足夠了但如果您需要它用於其他目的:
CREATE OR REPLACE FUNCTION distances(lat1 float, lon1 float, lat2 float, lon2 float)
RETURNS float AS $$
BEGIN
RETURN (
SELECT
ST_Distance(
ST_SetSRID(ST_MakePoint(lon1,lat1),4326),
ST_SetSRID(ST_MakePoint(lon2,lat2),4326), false));
END;
$$ LANGUAGE plpgsql;
否則這個 SQL 查詢會做:
SELECT ST_Distance(
ST_SetSRID(ST_MakePoint(51.23,8.83),4326),
ST_SetSRID(ST_MakePoint(51.24,8.55),4326), false);
干杯
進一步閱讀:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.