我正在做一个Django web项目。我有一个叫广告的模特。我需要给每个广告对象添加坐标,然后根据距离固定点的距离查询数据库,即检索距离固定点5公里内的所有广告对象。我读过关于GeoDjango的文章,但我有点困惑。
我有一个包含常规django模型的大型postgresql数据库,但我不确定如何将当前的数据库与空间数据库相结合。即使我可以创建一个空间数据库并为我的项目使用两个数据库,我想我也不能从我的常规数据库中引用模型。在这种情况下我能做什么?任何帮助都将不胜感激。
发布于 2012-02-27 04:24:01
您可以将标准PostgreSQL数据库转换为空间数据库(即PostGIS数据库)。您需要:
将空间数据类型和函数
发布于 2012-02-26 08:37:19
看看GeoDjango吧。它使用PostGIS作为地理空间数据库,因此您不需要设置额外的数据库。
发布于 2012-02-27 06:21:04
其他答案提到了postgis。为了完整起见,我还将提到pgsphere。http://pgsphere.projects.postgresql.org/
两者的不同之处在于,pgsphere用于“理论”球体上的点,而postgis用于地球表面的点。这听起来可能有些奇怪--这基本上意味着postgis包含对特定地图投影的支持,而pgsphere仅仅是基本的球面三角测量法。
我提到phsphere是因为如果你对涉及到的数学/近似感到满意,那么根据我的经验,它更容易安装和使用。另一方面,如果您不知道如何将两点之间的角度距离转换为它们的实际距离,或者需要准确地处理特定地图投影中的坐标,那么postgis是更好的选择。ilvar提到的postgis与geodjango的集成,也可能是postgis在您的案例中的优势所在。
无论采用哪种方法,您都需要编译包,然后启用并扩展数据库,如tyler所述。
https://stackoverflow.com/questions/9449404
复制相似问题