我使用带有GIS扩展的PostgreSQL来存储地图数据,以及OpenLayers,GeoServer等.给定一个多边形,例如邻域,我需要找到存储在某些表格中的所有LAT/LONG点(例如交通信号灯,餐馆)在多边形内.或者给定一组多边形,我想每个多边形内找到一组点的(如GROUP BY查询,而然后再遍历每个多边形).
这些功能是我需要编程的,还是可用的功能(作为扩展SQL)?请详细说明.
另外,对于我所做的简单2D数据,我实际上需要GIS扩展(GPL许可是限制)还是PostgreSQL就足够了?
谢谢!
Vin*_*vic 12
在PostGIS中,您可以使用边界框运算符来查找候选项,这在使用GiST索引时非常有效.然后,如果需要严格匹配,请使用contains运算符.
就像是
SELECT
points,neighborhood_name from points_table,neighborhood
WHERE
neighborhood_poly && points /* Uses GiST index with the polygon's bounding box */
AND
ST_Contains(neighborhood_poly,points); /* Uses exact matching */
Run Code Online (Sandbox Code Playgroud)
关于是否需要,取决于您的要求.为了实现上述目的,您当然需要安装PostGIS和GEOS.但是,如果边界框匹配足够,您可以在不需要PostGIS的SQL中编写代码.
如果需要完全匹配,则包含算法是公开可用的,但要有效地实现它们需要在库中实现它,然后从SQL调用(就像GEOS一样).
| 归档时间: |
|
| 查看次数: |
15892 次 |
| 最近记录: |