Django: подходит ли GeoDjango для моего сайта? - PullRequest
0 голосов
/ 03 июня 2011

Я строю сайт по недвижимости в Джанго и у меня есть модель Home, в которой хранится различная информация, включая адрес.База данных использует MySQL.

Хотите создать Yelp подобный поиск.

  • Поиск, в котором пользователи могут ввести почтовый индекс или название города., а затем получить результаты дома в этой области.

  • Пользователи также могут выбирать радиус (5 миль, 10 миль ...) из точки и получать более / менее результаты.

  • Результаты поиска будут на карте Google, и пользователи могут увеличивать / уменьшать масштаб для получения новых результатов поиска на карте.

Подходит ли Geo Django здесь?Догадываюсь, что не так много людей используют GeoDjango, потому что я не могу найти много документов для решения проблем, упомянутых выше.

После просмотра его официального документа в течение пары часов я не могу найти подходящий пример своих проблем и не уверен, насколько хорошо он интегрируется с существующим веб-сайтом, использующим MySQL.Может быть, слишком сложный для моего простого использования местоположения?

Мне действительно любопытно, подойдет ли Гео Джанго, если это так ... тогда я буду рассматривать это более агрессивно и глубоко.Если нет, я постараюсь создать его самостоятельно.

Любые рекомендации или советы по GeoDjango или о том, как построить систему, будут очень полезны и будут высоко оценены.

Ответы [ 4 ]

3 голосов
/ 03 июня 2011

GeoDjango может справиться с чем-то подобным. Предположим, что ваша Home модель выглядит следующим образом:

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

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

Вы можете выбрать все Home модели в пределах x миль от точки, подобной этой:

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.

1 голос
/ 04 июня 2011

Я создал сайт на Django с похожими функциями (база данных MySQL полна адресов и координат широты / долготы).Я говорил с когортами, которые более знакомы с Django и GeoDjango, и они порекомендовали, что это может быть немного излишним для моего проекта.

Так что, если миграция базы данных является огромной болью и не обязательна, возможно, вамхорошо, просто придерживаясь своей текущей базы данных и просто используя запрос формулы Haversine, чтобы найти ближайшие точки к местоположению.

0 голосов
/ 05 июня 2011

GeoDjango имеет большой смысл, если вы уже используете Django.Тем не менее, вы также должны рассмотреть возможность использования Lucene в вашем случае.Он может обрабатывать географические запросы и, вероятно, работает лучше, чем запросы MySQL, если вам нужно выполнять многогранные запросы и нечеткий поиск (то, что я хотел бы использовать на сайте с большим количеством домов).

0 голосов
/ 03 июня 2011

GeoDjango работает, но для начинающего пользователя его очень сложно установить.Также GeoDjango имеет некоторые ограничения на MySQL.Насколько я знаю, он показывает лучшее на postgresql.

С какой именно проблемой вы сталкиваетесь при установке geodjango?

Я потратил 10-20 часов, прежде чем начал понимать процесс установки geodjango.:)

...