谷歌地图-Django:是GeoDjango很适合我的网站



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

想要创建Yelp类搜索。

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

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

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

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

在看了它的官方文档大约几个小时后,我真的找不到与我的问题相关的例子,也不确定它与使用MySQL的现有网站的集成程度。对于我简单的位置使用来说可能太复杂了?

我真的很好奇Geo Django是否很适合,如果是的话……那么我会更积极、更深入地研究它。如果没有,我会试着自己建造。

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

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。

我在Django上建立了一个具有类似功能的网站(MySQL数据库中充满了地址和纬度/经度坐标)。我与更熟悉Django和GeoDjango的团队进行了交谈,他们认为这对我的项目来说可能有点过头了。

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

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

GeoDjango可以工作,但对于新手用户来说安装起来非常困难。此外,GeoDjango对MySQL也有一些限制。正如我所知,它显示了postgresql上最好的。

你在安装geodjango时到底遇到了什么问题?

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

最新更新