首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostGIS查询从多边形表中选择所有具有交叉几何学且传递的GeoCoordinates列表中有一个或多个点的多边形

PostGIS查询从多边形表中选择所有具有交叉几何学且传递的GeoCoordinates列表中有一个或多个点的多边形
EN

Stack Overflow用户
提问于 2020-07-24 08:12:33
回答 1查看 1.3K关注 0票数 2

我在Postgres (使用PostGIS扩展)中有一个名为多边形的多边形表,它有两个字段(geom,id)。

如果我想查询与输入地理坐标几何相交的多边形的id,那么我可以使用下面的查询。

代码语言:javascript
复制
SELECT id, geom 
FROM polygon 
WHERE ST_Intersects(polygon.%s, ST_GeometryFromText(POINT(latitude logitude), 4326));

但是现在我有了一个用例,我在请求中得到了很多地理坐标(~60k),现在我把它分解成1k个地理坐标的列表,并查询与每个地理坐标相交的多边形的id。

我在为如何写作而挣扎。如果有人对此有更好的解决方案,请建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 09:56:16

请记住,坐标对的正确顺序是lon, lat,因此在查询中使用lat, lon创建一个点将返回错误的结果。您的查询还忽略了WKT坐标附近的单引号',例如'POINT(1 2)'

总之,您可以简单地使用ORDER BYLIMITOFFSET对结果集进行分页。

获得前1000项记录

代码语言:javascript
复制
SELECT id, geom FROM polygon
WHERE ST_Intersects(geom, 'SRID=4326;POINT(1 2)')
ORDER BY id
LIMIT 1000 OFFSET 0;

通过更改OFFSET值,您可以检索下一个页面。

代码语言:javascript
复制
LIMIT 1000 OFFSET 1000;

以此类推。

代码语言:javascript
复制
LIMIT 1000 OFFSET 2000;

编辑:使用多个输入点应用此查询的一种方法是使用CTE / subquery (参见注释)。

代码语言:javascript
复制
WITH j(g) AS (
  VALUES 
    ('SRID=4326;POINT(1 1)'),
    ('SRID=4326;POINT(1 2)') 
    -- ... add as many geometries as you want
)
SELECT id, geom FROM polygon, j
WHERE ST_Intersects(geom, g::geometry)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63069541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档