2010-10-27 2 views
2

Я хотел был бы быть в состоянии связать различные модели (места, места, памятники) с городом/страной.Хороший способ сделать Django geolocation осведомленным? - Django/Geolocation

Но я не уверен, что некоторые хорошие способы реализации этого будут.


Я следую простому маршруту, я реализовал модель страны и города.

Всякий раз, когда упоминается новый город или страна, он автоматически создается.

К сожалению, у меня есть различные проблемы:

  • База данных может быть легко загрязняется

  • Джанго не имеет никакого реального знания о том, что эти города/страны действительно


Любые советы или идеи? Благодаря! :)

+0

Возможный дубликат http://stackoverflow.com/questions/2053971/looking-for-python-django-framework-to-query-geolocation-data-in-db –

ответ

7

Хорошими отправными точками было бы получить набор данных местоположения от службы, например Geonames. Существует также GeoDjango, который появился в this question. Когда вы сталкиваетесь с новыми именами мест, прежде чем добавлять их, проверьте их на свой большой набор данных. Для вашего второго пункта вам нужно будет создать это в своей объектной модели и написать свой код соответствующим образом.

Вот некоторые другие вещи, которые вы можете рассмотреть следующие вопросы:

  • Aliases & Сокращения
    • Они придумали больше, чем вы могли бы подумать. Люди часто используют названия пригородов или кварталов, которые не являются официальными городами. Вы также можете рассмотреть такие, как LA -> Los Angeles MTL для Montreal, MT. Лес -> Mount Forest, Saint против (. ST-й ST-) и т.д.
  • Fuzzy Поиск
    • Глядя названия городов гораздо проще, когда различия в написании учитываются. Это также помогает уменьшить количество повторяющихся имен для одного и того же места.
    • Вы можете сделать это, предварительно вычислив значения Soundex или Double Metaphone для городов в вашем наборе данных. При выполнении поиска вычислите значение для условия поиска и сравните его с предварительно вычисленными значениями. Это лучше всего подходит для английского языка, но у вас может быть успех с другими производными языка романсов (неуверенность в том, что ваши варианты выше).
  • Расположение Эквивалентность/Включение
    • быть в состоянии определить, что Бруклин является район Нью-Йорка.

В конце концов, это нелегкая задача, но применяя эти предложения должны значительно уменьшить количество повреждения данных и другие головные боли, вам приходится иметь дело с.

0

Геокодирование данных из yahoo и google может быть хорошим стартовым позиционированием, а также взглянуть на геофизическую библиотеку в django.

+0

Предоставляют ли Google или Yahoo свои наборы данных для загрузки? Насколько я могу судить, это всего лишь онлайн-API. [MaxMind GeoIP] (http://www.maxmind.com/app/ip-location) и [GeoNames] (http://download.geonames.org/export/dump/) имеют данные для загрузки. –

Смежные вопросы