我最近和 Postgis 一起使用了 Postgres ,我似乎无法弄清楚它的正确语法是什么。
问题:我需要一个特定区域内的点ID列表。 lat 和 lon 是两列bigint
类型,cluj.the_geom
是polygon
。
link_geometry:link_id | lat | lon
cluj: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)
我收到以下错误消息:
我提到我无权修改表格。
答案 0 :(得分: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);