【问题标题】:Geometric calculations in a django modeldjango 模型中的几何计算
【发布时间】:2012-02-26 00:22:32
【问题描述】:

我正在开发一个 Django 网络项目。我有一个名为 Ad 的模型。我需要为每个 Ad 对象添加坐标,然后通过距固定点的距离查询数据库,即检索距固定点 5 公里范围内的所有 Ad 对象。我读过关于 GeoDjango 的文章,但我有点困惑。

我有一个包含常规 django 模型的大型 postgresql 数据库,但我不确定如何将我当前的数据库与空间数据库结合起来。即使我可以创建一个空间数据库并为我的项目使用两个数据库,我想我也无法从我的常规数据库中引用模型。在这种情况下我能做什么?任何帮助将不胜感激。

【问题讨论】:

    标签: python django geodjango


    【解决方案1】:

    您可以将标准 PostgreSQL 数据库转换为空间数据库(即 PostGIS 数据库)。您需要:

    1. Build/install PostGIS
    2. 将空间数据类型和函数添加到现有数据库中。请参阅 PostGIS 文档中的 Create a spatially-enabled database 部分。
    3. 添加空间功能后,您应该能够add geometric fields 到您的模型中。

    【讨论】:

      【解决方案2】:

      看看GeoDjango。它使用 PostGIS 作为地理空间数据库,因此您无需设置额外的数据库。

      【讨论】:

      • 我试过了,但我无法将几何字段添加到我的模型中。我是否需要更改我的数据库后端以支持空间数据,或者使用另一个后端连接到同一个数据库?
      【解决方案3】:

      其他答案提到postgis。为了完整起见,我还将提到 pgsphere。 http://pgsphere.projects.postgresql.org/

      两者之间的区别在于 pgsphere 用于“理论”球体上的点,而 postgis 用于地球表面上的点。这听起来可能很奇怪——这基本上意味着 postgis 包括对特定地图投影的支持,而 pgsphere 只是基本的球面三角函数。

      我提到 phsphere 是因为如果您对所涉及的数学/近似值感到满意,那么根据我的经验,它更简单、更易于安装和使用。另一方面,如果您不知道如何将两点之间的角距离转换为它们的实际距离,或者您需要准确处理特定地图投影中的坐标,那么最好使用 postgis。 ilvar 提到的 postgis 与 geodjango 的集成也可能是 postgis 对您有利的一点。

      无论哪种方式,您都需要编译包,然后启用和扩展您的数据库,正如 tyler 所描述的那样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多