Django:GeoDjango是否适合我的网站?

时间:2011-06-03 16:19:33

标签: django google-maps geolocation geodjango

我正在Django建立一个房地产网站,并有一个Home模型,存储各种信息,包括地址。数据库后端正在使用MySQL。

想要像搜索一样创建 Yelp

  • 用户可以输入邮政编码或城市名称的搜索,然后在该区域中获取主页结果。

  • 用户还可以从该点选择半径(5英里,10英里......)并获得更多/更少的结果。

  • 搜索结果将在谷歌地图上,用户可以放大/缩小以在地图中获取新的搜索结果。

Geo Django 是否适合这里?猜测没有太多人使用GeoDjango,因为我找不到很多文档来解决上面提到的问题。

在查看official doc大约几个小时后,我无法找到问题的相关示例,也不确定它与使用MySQL的现有网站的集成程度。对我的简单位置使用来说可能太复杂了?

我真的好奇Geo Django是否合适,如果是这样的话......那么我会更积极深入地研究它。如果没有,我会尝试自己构建它。

有关GeoDjango或如何构建系统的任何指导或提示都会非常有用,我们将非常感激。

4 个答案:

答案 0 :(得分:3)

GeoDjango可以处理类似的事情。假设您的Home模型如下所示:

from django.contrib.gis.db.models import PointField

class Home(Model):
    location = PointField()
    .. etc

您可以在x英里范围内获取所有Home个模型:

from django.contrib.gis.measure import D
from django.contrib.gis.geos import Point

Home.objects.filter(location__distance_lte=(Point([...]), D(mi=x)))

基本上,你需要给过滤器的是一个包含Geometry(在你的情况下是Point)和距离(用D对象)的元组。你有很多单位代表距离,在您的情况下mi)。

此外,这在MySQL中不起作用,因为没有后端函数来处理它。你最好的选择是PostgreSQL。

答案 1 :(得分:1)

我在Django上构建了一个具有类似功能的站点(MySQL数据库中包含地址和纬度/经度坐标)。我和那些更熟悉Django和GeoDjango的队友交谈,他们建议我的项目可能有点过分。

因此,如果迁移数据库是一个巨大的痛苦而且没有必要,那么您可能只需坚持使用当前数据库并使用Haversine公式查询来查找到某个位置的最近点。

答案 2 :(得分:0)

如果你已经在使用Django,那么GeoDjango会很有意义。但是,您还应该考虑将Lucene用作您的用例。它可以处理地理查询,如果你需要进行多方面的查询和模糊搜索(我想在有很多家庭的网站上使用它),它可能比mysql查询表现更好。

答案 3 :(得分:-1)

GeoDjango可以工作,但是对于新手用户来说很难安装。 GeoDjango对MySQL也有一些限制。据我所知,它在postgresql上表现得最好。

您在geodjango安装中遇到了什么问题?

在我开始了解geodjango安装过程之前大约10-20小时我已经浪费了:)