![](/img/trans.png)
[英]How to create a table with geometry polygons and field_ID from another table containing field_ID and lat long point in 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_agg
与ST_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.