0

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

想要创建类似Yelp的搜索。

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

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

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

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

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

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

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

4

4 回答 4

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)))

基本上,您需要给过滤器的是一个元组,其中包含一个几何(Point在您的情况下)和距离(与D对象。在您的情况下,您有很大范围的单位来表示距离mi)。

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

于 2011-06-03T16:41:20.173 回答
2

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

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

于 2011-06-03T22:13:49.117 回答
0

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

于 2011-06-05T17:30:20.603 回答
-1

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

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

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

于 2011-06-03T16:39:24.553 回答