django模型中的几何计算

时间:2012-02-26 00:22:32

标签: python django geodjango

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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