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

标签 django google-maps postgis

我正在开发一个 Google map 应用程序,该应用程序具有以下功能(在低缩放级别上):

  1. 在 map 上打印一堆多边形叠加层。这些多边形是根据我使用 Google 地球创建的 KML 文件创建的。基本上这些多边形覆盖了大陆大小的地球 block 。其中 15 个覆盖了整个世界。

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

我想要在 map 上显示的点有一个代表国家/地区的字段和一个代表纬度/经度的字段。我获取总数的方法是按国家/地区代码对每个多边形运行查询,如下所示:

east_europe_total = Point.objects.filter( Q(country_code='TR') | Q(country_code='CZ') ... ).count()

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

最佳答案

虽然它没有完全满足您的要求,但我找到了 this article其可读性的叙述是无价的(与您需要的操作有些不同,也与我当时尝试做的操作不同,但仍然需要 PostGIS 与 KML 文件交互)。正如文章作者所说,

Generally there is a lot of GIS jargon that is quite academic, mathematical and disconcerting for the uninitiated (e.g. convex hulls) but if you keep looking long enough you'll eventually find what you need!

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

所以,总而言之,首先您需要找到一种可接受的方法将您的 KML 转换为 PostGIS 知道的格式 [或者特别是 ogr2ogr 知道的格式],例如 GML(并验证它),然后是像 ogr2ogr 这样的格式。让您将该格式加载到 PostGIS 中 - 当然您仍然需要多边形内的点操作,但是,嘿,这是一个开始。

关于django - 使用 KML 查询 PostGIS 数据库 "shapefile",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085279/

相关文章:

javascript - 在 AngularJS 的谷歌地图中单击标记时如何关闭其他信息窗口

python - Django 1.8,Postgis查询两点之间的距离

postgresql - 如何在谷歌地图上绘制 Postgis Shortest_path 线?

python - 如何在 Django 中将 css 加载为静态

django - 如何修复 Swagger 中的混合内容错误?

javascript - 创建点击进入实际 map 的 map 示例

postgresql - 使用 NetTopologySuite 与 EF Core 和 postgis 计算两点之间的地理距离

javascript - Dojo 看不到自定义小部件

django - 我如何获得 django 的帖子数量

android - 如何避免谷歌地图中的 QUERY_LIMIT 率