PostgreSQL / PostGIS在查询中使用变量

时间:2018-10-05 13:27:16

标签: postgresql postgis

我正在尝试访问一个点并为其获取检查器名称。通过其自身进行的查询工作正常,但是我需要经度和纬度作为变量,因为Lng和Lat会发生变化。

这就是我所拥有的

DO $$
DECLARE
   longitude text := -4.323966436509;
   latitiude text := 51.857052145748;
BEGIN 
    --RAISE NOTICE '% %', longitude, latitiude;
    SELECT inspectors_name as Name  
    FROM ccc_transport_streets."Inspectors_Areas_polygon" 
    WHERE ST_Contains(geom, ST_Transform (ST_GeometryFromText('POINT(lonitude latitiude)',4326), 27700));
END $$;

但是我收到错误消息:-

  

错误:解析错误-无效的几何提示:“ POINT(lo)<-解析   几何中位置8处的误差

我也将数据类型更改为float。任何新的Postgresql想法。

1 个答案:

答案 0 :(得分:1)

要创建点,请使用st_makepoint()函数。然后为该点设置SRID,然后检查多边形是否包含该点。

DO $$
    DECLARE
       longitude numeric := -4.323966436509;
       latitiude numeric := 51.857052145748;
    BEGIN 
        --RAISE NOTICE '% %', longitude, latitiude;
        SELECT inspectors_name as Name  
        FROM ccc_transport_streets."Inspectors_Areas_polygon" 
        WHERE ST_Contains(geom, ST_setSRID (st_makePOINT (longitude, latitiude),4326)
);
    END $$;