我正在开发一个Django网络项目。我有一个名为Ad的模型。我需要为每个Ad对象添加坐标,然后通过距固定点的距离查询数据库,即检索距固定点5 km距离内的所有Ad对象。我读过关于GeoDjango的文章,但我有点困惑。
我有一个常规django模型的大型postgresql数据库,我不知道如何将我当前的数据库与空间数据库结合起来。即使我可以创建一个空间数据库并为我的项目使用两个数据库,我也无法从我的常规数据库中引用模型。在这种情况下我该怎么办?任何帮助将不胜感激。
答案 0 :(得分:1)
您可以将标准PostgreSQL数据库转换为空间数据库(即PostGIS数据库)。你需要:
答案 1 :(得分:0)
看看GeoDjango。它使用PostGIS作为地理空间数据库,因此您无需设置其他数据库。
答案 2 :(得分:0)
其他答案提到postgis。为了完整性,我还会提到pgsphere。 http://pgsphere.projects.postgresql.org/
两者之间的区别在于pgsphere用于“理论”球体上的点,而postgis用于地球表面上的点。这可能听起来很奇怪 - 它基本上意味着postgis包括对特定地图投影的支持,而pgsphere只是基本的球形三角形。
我提到了phsphere,因为如果你对所涉及的数学/近似值感到满意,那么根据我的经验,它更简单,更容易安装和使用。另一方面,如果你不知道如何将两点之间的角距转换为实际距离,或者你需要准确处理特定地图投影中的坐标,那么postgis更可取。 ilvar提到的postgis与geodjango的整合,在你的案例中也可能是postgis的一个重点。
无论哪种方式,您都需要编译包,然后启用和扩展您的数据库,如Tyler所述。