Django + postgreSQL:找到近点

时间:2013-03-24 00:09:57

标签: python django postgresql postgis geodjango

对于我的应用程序,我需要确定最接近其他点的点,我正在寻找一个简单但相对较快(在性能方面)的解决方案。我正在考虑使用PostGIS和GeoDjango,但我认为我的应用程序并不是真正的那种"地理" (我仍然不知道这意味着什么)。地理部分(大约占整体的5%)是我需要保持对象(人和地点)的坐标,然后有这个任务来找到最近的点。简而言之,PostGIS和GeoDjango在这里似乎有些过分。

我也在考虑使用SOLR或Elasticsearch的django-haystack,因为我需要一个强大,强大的文本搜索功能,这些引擎也有这些"地理"特征。但不确定它,因为我害怕核心db< - >搜索引擎数据库同步和这些引擎的硬件要求。目前我更像是使用posgreSQL三元组和一些自定义方式来做到这一点"找到近点问题"。有什么好的吗?

3 个答案:

答案 0 :(得分:2)

要查找彼此靠近的点或边界框,请考虑使用Rtree Python包。这使用与PostGIS类似的空间索引技术,除了它不是数据库软件并且可以在软件中使用。我测试的速度比PostGIS更快,可以找到数百万个物体的近点。

请参阅examples in the tutoral,以便更好地找到最近的物体。

答案 1 :(得分:0)

你可能是对的,PostGIS / GeoDjango可能有些过分,但制作你自己的Django应用对你的简单任务来说不会太麻烦。 Django在模板等方面提供了很多,而内置的管理员可以很容易地输入单个记录。 GeoDjango是contrib的一部分,因此如果您的项目需要它,您可以随时使用它。

答案 2 :(得分:0)

结帐shapely。看起来对象的project()方法可能就是您正在寻找的内容。