Геометрические расчеты в модели Джанго - PullRequest
1 голос
/ 26 февраля 2012

Я работаю над веб-проектом Django.У меня есть модель под названием Ad.Мне нужно добавить координаты для каждого рекламного объекта, а затем запросить базу данных по расстоянию от фиксированной точки, то есть извлечь все рекламные объекты на расстоянии 5 км от фиксированной точки.Я читал о GeoDjango, но я немного запутался.

У меня есть большая база данных postgresql с обычными моделями django, и я не уверен, как я могу объединить мою текущую базу данных с пространственной базой данных.Даже если я смогу создать пространственную базу данных и использовать две базы данных для своего проекта, я не смогу ссылаться на модель из своей обычной базы данных, я полагаю.Что я могу сделать в этом случае?Любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Вы можете преобразовать стандартную базу данных PostgreSQL в пространственную базу данных (то есть базу данных PostGIS).Вам необходимо:

  1. Построить / установить PostGIS .
  2. Добавить типы пространственных данных и функции в существующую базу данных.См. Раздел Создание пространственно-активной базы данных в документации PostGIS.
  3. После добавления пространственной функциональности вы сможете добавить геометрические поля в свои модели.
0 голосов
/ 27 февраля 2012

другие ответы упоминают postgis.для полноты я также упомяну pgsphere.http://pgsphere.projects.postgresql.org/

разница между ними состоит в том, что pgsphere предназначен для точек на "теоретической" сфере, в то время как postgis предназначен для точек на поверхности Земли.это может показаться странным - это в основном означает, что postgis включает в себя поддержку определенных проекций карты, в то время как pgsphere - это просто базовая сферическая тригонометрия.

Я упоминаю phsphere, потому что, если вы довольны математическими вычислениями / приближениями, то это так,по моему опыту, проще и проще в установке и использовании.с другой стороны, если вы не знаете, как преобразовать угловое расстояние между двумя точками в их действительное расстояние или вам нужно точно обрабатывать координаты в конкретной проекции карты, тогда предпочтительнее использовать postgis.Интеграция postgis с geodjango, о которой упоминает ilvar, также может быть в пользу Postgis в вашем случае.

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

0 голосов
/ 26 февраля 2012

Посмотрите на GeoDjango . Он использует PostGIS в качестве геопространственной БД, поэтому вам не нужно будет устанавливать дополнительную БД.

...