我在postgres中有一个名为polygon的polygons表(使用postgis扩展),它有两个字段(geom,id)。
如果我想查询与输入地理坐标几何体相交的多边形的id,那么我可以用下面的查询来完成。
SELECT id, geom
FROM polygon
WHERE ST_Intersects(polygon.%s, ST_GeometryFromText(POINT(latitude logitude), 4326));
但是现在我有了一个用例,我在请求中获得了很多地理坐标(~60k),现在我将其分解为每个1k地理坐标的列表,并查询与每个地理坐标相交的多边形的id。
我正在努力学习如何写作。如果有人对此有疑问,或者有更好的解决方案,请提出建议。
1条答案
按热度按时间nbnkbykc1#
请记住,坐标对的正确顺序是
lon, lat
,因此使用lat, lon
在您的查询中将返回错误的结果。您的查询还缺少单引号'
在wkt坐标周围,例如。'POINT(1 2)'
.总之,您可以使用
ORDER BY
,LIMIT
以及OFFSET
,例如。获得前1000张唱片
通过改变
OFFSET
值可以检索下一页。以此类推。。
编辑:使用多个输入点应用此查询的一种方法是使用
CTE / subquery
(见注解),例如。