【问题标题】:GeoDjango Too Much For This Project?GeoDjango 对于这个项目来说太多了吗?
【发布时间】:2012-03-14 12:37:54
【问题描述】:

我目前正在构建我的第一个基于 Django 的应用程序,该应用程序正在进行中 到目前为止还算不错。目标之一是允许用户发布 信息(文本、图片、视频)和应用程序能够 自动检测他们发布此信息的位置 (即,从浏览器中提取位置信息)。理想情况下,该数据将 以后可以过滤,例如查看其中发布的帖子 一个特定的半径。

我读过一些关于 GeoDjango 的文章,听起来很有趣, 如果可能比这个项目的要求更复杂。查询方面看起来很有希望。
不过,一位同事建议了所有可以使用的方法 GeoDjango 使用 Google Maps API 与 JavaScript 或 JQuery 来获取正确的坐标。

基本上,我想看看 GeoDjango 会提供什么好处 这个相当简单的项目,而不是仅使用 Google Maps API。如果我已经 在基本的 Django 中开始了一个项目;正在合并 GeoDjango 有问题?我仍在尝试掌握 Django 的基础知识和 对于新手开发人员来说,冒险进入 GeoDjango 可能太过分了。或不。

任何见解都值得赞赏。

【问题讨论】:

    标签: django geodjango


    【解决方案1】:

    要在某个位置的给定半径范围内准确找到已定位的帖子,您需要计算地理位置之间的距离。计算不是微不足道的。引用Django docs(稍作语法修正):

    使用空间数据计算距离很棘手,因为, 不幸的是,地球并不平坦。

    幸运的是,使用 GeoDjango 隐藏了这种复杂性。距离查询如下:

    qs = SouthTexasCity.objects.filter(point__distance_lte=(pnt, 7000))
    

    虽然可以使用 JavaScript/JQuery 编写此逻辑,但我看不出有什么理由,因为您已经在使用 Django。除非你是:

    1. 无法使用空间数据库。 GeoDjango distance queries 仅在您使用 PostGIS、Oracle 或 SpatiaLite 作为数据库时可用。 (即 MySQL 不支持距离查询)

    2. 无法安装 GeoDjango 所依赖的geospatial libraries

    【讨论】:

    • 这很棒,@TylerErickson。听起来 GeoDjango 可能是最好的选择。问题:GeoDjango 可以在现有项目的中途安装吗?
    • 是的。 GeoDjango 是 Django 的一部分,所以你已经是其中的一部分。您可能需要切换到使用空间数据库(转储任何现有数据后),并安装geospatial library dependencies。此外,您可能希望修改现有数据模型以利用 spatial field types
    • MySQL(和其他非空间数据库)可以使用一个很好的旧 Haversin 公式进行距离查询。 Good explanation and examples here.
    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2014-08-04
    相关资源
    最近更新 更多