GeoDjango的用法


9

我们正在创建一个在地图上显示地理数据的网站(当前使用Google Maps js API)。我们目前正在使用postgres + postGIS + php。建议我研究一下GeoDjango的用法。我在确定GeoDjango在postGIS已提供的功能(即点,线串,多边形,距离计算,面积计算,“内部”逻辑等)之上提供哪些附加地理功能时遇到了麻烦。

GeoDjango是否提供其他功能,还是要简化现有地理功能的使用?

谢谢!

Answers:


11

GeoDjango还提供了许多增值的现成功能。

  • 具有地理空间功能的管理网站:一般来说,这是Django我最喜欢的功能之一。Django自动创建外观漂亮的管理页面。GeoDjango将这一步骤更进一步,并为您提供了一种使用Openlayers地图轻松查看和编辑地理空间数据的方法。
  • GeoRSS / GeoAtom提要:创建GeoRSS / GeoAtom提要相对容易。
  • KML / GML / GeoJSON支持:GeoDjango支持KML,GML和GeoJSON序列化。尽管免责声明,但我使用Django完成了一些REST-API,发现我没有为此使用GeoDjango的内置功能。
  • 第三方库:OLWidgets是GeoDjango第三方库的一个示例,它使创建交互式地图更加容易。此外,您还可以访问各种Python库。例如,有一个名为Haystack的项目可提供全文本搜索功能。如果使用的是外部搜索索引(例如Solr或Elasticsearch),则可以使用Django进行地理空间启用的全文搜索。就个人而言,Elasticsearch可以很好地替代PostGIS进行空间搜索。它没有Postgis的所有功能,但是在大多数用例中都做得很好。
  • 这使得在不同数据库之间移动变得非常容易。我个人曾将GeoDjango与Spatialite和Postgis一起使用。

我的总体评估是,Django和Python在Web开发方面要好得多。我们都有个人偏见,但是Python拥有大量的地理空间和数字库。如果您需要实现复杂的地理空间算法,那么这是一个不错的选择。


3

是。是的。目的是通过基本功能简化现有地理功能的使用。并且它提供了一些具有某些数据库的地理功能,如下图所示;

空间的

除此之外,使用一个段落功能不难获得令人满意的结果。该代码为您提供半径5公里的物体。

qs = Events.objects.filter(point__distance_lte(pnt, D(km=5)))

如果您想获得有关geodjango的更多信息,可以在这里查看有关同一主题的答案。

我希望它可以帮助您...


我想你需要一个=迹象:qs = Events.objects.filter(point__distance_lte=(pnt, D(km=5)))
弗朗西斯·亚科涅洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.