Avi*_*hai 4 sql postgresql postgis ruby-on-rails geolocation
我已经设法获得特定多边形中包含的所有点的列表,但是如何查询PostGIS数据库以找出包含给定点的多边形?
假设我有一个places带有lat/lon位置(POINT类型)的areas表和一个geometry带有MULTIPOLYGON类型列的表.
如何编写一个返回地点列表和包含每个点的所有区域的查询?例如:
place_id, area_ids
1, {23,425,536}
2, {30,425}
-- etc...
Run Code Online (Sandbox Code Playgroud)
Joh*_*ell 11
您需要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;
Run Code Online (Sandbox Code Playgroud)
注意,您可以在array_agg中放置一个Order By,以便区域ID始终以相同的顺序出现.我已经调用了表的主键,id和两个表的几何,geom,因此您可能需要调整设置.
| 归档时间: |
|
| 查看次数: |
6587 次 |
| 最近记录: |