使用KML"shapefile"查询PostGIS数据库

pri*_*stc 2 django google-maps postgis

我正在开发一个Google Maps应用程序,该应用程序可以执行以下操作(在低缩放级别):

  1. 在地图上打印一堆多边形叠加.这些多边形是使用我在Google Earth中创建的KML文件创建的.基本上这些多边形覆盖了大陆上大陆的大块.其中15个覆盖了整个世界.

  2. 在每个多边形叠加层的顶部,会显示一个数字,表示该多边形内存在的点的总数.

我想在地图上显示的点有一个代表国家的字段和一个纬度/经度字段.我得到总数的方法是通过国家代码运行每个多边形的查询,如下所示:

east_europe_total = Point.objects.filter( Q(country_code='TR') | Q(country_code='CZ') ... ).count()
Run Code Online (Sandbox Code Playgroud)

如果我想要跨越一个国家,或者如果我想重新组织我的多边形"扇区",这不是很好.一个更好的解决方案是将KML文件提供给数据库(即PostGIS)并将其全部整理出来.这有可能吗?如果没有,那么将KML文件转换为既可以轻松插入Google地图可以通过postGIS查询的格式呢?

Ale*_*lli 6

虽然它没有完全回应你的要求,但我发现这篇文章非常宝贵,因为它的可读性叙述(操作与你需要的操作有些不同 - 与我当时尝试做的不同) - 但仍需要PostGIS与KML文件进行交互).正如文章的作者所说,

一般来说有很多GIS专业术语的那是相当的学术,数学和令人不安的门外汉(如凸包),但如果你继续寻找足够长的时间,你最终会发现你所需要的!

...和像这样的可读文章(指向许多工具和c)是一个开始.

因此,总而言之,首先你需要找到一种可接受的方式将你的KML变成PostGIS知道的格式[或者特别是ogr2ogr知道的],例如GML(并验证),然后像ogr2ogr这样的东西可以让你将这种格式加载到PostGIS中 - 当然,你仍然需要多边形点操作,但是,嘿,这是一个开始.