2017-08-04 74 views
0

我最近把我的手放在Postgres连同Postgis我似乎无法弄清楚什么是正确的语法。获取点(纬度,长)和特定区域

问题:我需要一个在特定区域中的点的ID列表。 lat and lonbigint类型的两列和cluj.the_geompolygon

link_geometry:link_id | LAT | LON

克卢日:the_geom

SELECT link_id 
FROM rou_country_20656215.link_geometry r, cluj 
WHERE ST_Intersects(ST_PointFromText((CAST(r.lon AS float)/100000, CAST(r.lat AS float)/100000), 4326), cluj.the_geom) 

我收到以下错误信息:

ERROR

我提,我没有访问修改表。

回答

0

在我已经解决了它这样的结尾,除了:假设你的纬度和经度值是文本(隐含在你的代码),那么这应该产生你所需要的那种表情我错过了设置SRID的解释。

SELECT link_id, 
FROM rou_country_20656215.rdf_link_geometry r, rou_country_20656215.cluj c 
WHERE ST_Intersects(
      ST_SetSRID(
       ST_MakePoint(CAST(r.lon AS float)/10^5, CAST(r.lat AS float)/10^5),4326),c.the_geom) 
0

您的两个CAST表达式以及它们之间的逗号周围的括号会导致该表达式被解释为记录。这需要是一个字符串。从记录

SELECT link_id 
FROM rou_country_20656215.link_geometry r, cluj 
WHERE 
    ST_Intersects(
     ST_PointFromText(cast(cast(r.lon AS float)/100000 as text) 
      || cast(cast(r.lat AS float)/100000 as text)), 4326)), 
      cluj.the_geom);