簡體   English   中英

在表中使用 ST_Distance

[英]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。

有幾件事:

  • 您試圖在沒有||的情況下連接字符串中的變量
  • 正確的順序是lon lat ,而不是lat lon
  • 為此,您不需要 function。 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM