postgresql - 在 PostGIS 中查询 map View 边界内的多边形

标签 postgresql google-maps postgis

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

最佳答案

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 加载到谷歌地图,请查看 AS_GeoJSON Postgis 中的函数,它允许您直接从 Postgis 创建 GeoJSON,然后您可以直接将其加载到 Google map 中,请参见此示例:load GeoJSON in Google Maps

编辑:

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

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

关于postgresql - 在 PostGIS 中查询 map View 边界内的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472980/

相关文章:

ruby-on-rails - 使用 Postgres 查询哈希数组的数组

sql - 如何解析postgres中文本列的json值

javascript - 基于数据库的谷歌地图自定义标记

javascript - 如何使用谷歌地图 API 获取本地业务结果

MySQL - 地理空间对象

java - Hibernate 简单选择查询不返回任何内容

postgresql - Heroku 上慢得离谱的 SQL 查询

android - Android应用添加MapView时出现cross-loader异常

postgresql - 无效的几何类型修饰符

使用PHP时PostgreSQL查询错误