在PostGIS中查询地图视图边界内的多边形

时间:2014-06-29 03:45:24

标签: postgresql google-maps postgis

我是PostGIS的新手。我有一张包含Polygon类型区域边界的表格。我想在谷歌地图上显示多边形。每次更改谷歌地图视图边界时,应用程序都应该在PostGIS中查询该地图视图中的任何多边形。有人可以指导我开始吗?

2 个答案:

答案 0 :(得分:2)

Select * from Polygons where ST_Intersects(
    ST_MakeBox2D(ST_MakePoint(lon1, lat1), ST_MakePoint(lon2, lat2)),
    geom);

假设您有一个名为Polygons的表,并且您的几何字段称为geom。您还需要确保在几何字段上具有空间索引:

Create index ix_spatial_geom on Polygons using gist (geom);

如果您打算将Postgis中的数据加载到谷歌地图中,​​请查看Postgis中的AS_GeoJSON功能,它允许您直接从Postgis创建GeoJSON,然后您可以直接将其加载到Google地图中,请参阅此示例:load GeoJSON in Google Maps

编辑:

使用-s开关导入数据时,可以设置SRID。强烈建议您在创建列时或在之后运行带有UpdateGeometrySRID的更新时在列上显式设置SRID,因为这有助于强制执行完整性,并启用从一个坐标系到另一个坐标系的转换。 / p>

在指定坐标系统中获得数据后,您还可以使用ST_Transfrom从一个坐标系转换到另一个坐标系,例如从4326到3857(Google地图图块的投影米) )。

答案 1 :(得分:1)

ST_Intersects可能是您想要的最佳解决方案。

如果您不熟悉Postgis,我建议您使用 Postgis Cheat Sheet 。本文档包含了您现在可能会使用的所有Postgis基本和最常用的命令,它可以帮助您快速获取它而无需阅读整本手册。

如何使用ST_Intersect和所有最常用的替代品。