繁体   English   中英

在PostGIS中查找包含点的所有多边形

[英]Find all polygons containing a point in PostGIS

我已经设法获得特定多边形中包含的所有点的列表,但是如何查询PostGIS数据库以找出包含给定点的多边形?

假设我有一个表places用经/纬度位置( POINT类型)和areas表与geometry与列MULTIPOLYGON类型。

如何编写一个返回地点列表和包含每个点的所有区域的查询? 例如:

place_id, area_ids
1, {23,425,536}
2, {30,425}
-- etc...

您需要将array_aggST_Contains结合使用,有关array_agg和类似函数的更多信息,请参阅聚合函数。 如果将它与点表上的组合结合,您将获得包含这些点的所有多边形的数组,例如,

SELECT pl.id, array_agg(ar.id ORDER BY ar.id) as area_list
FROM areas ar, places pl 
WHERE ST_Contains(ar.geom, pl.geom) 
GROUP BY pl.id
ORDER BY pl.id; 

注意,您可以在array_agg中放置一个Order By,以便区域ID始终以相同的顺序出现。 我已经调用了表的主键,id和两个表的几何,geom,因此您可能需要调整设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM