среда, 31 октября 2012 г.

Настройка поддержки геоданных в Django

Настройка окружения для работы с геоданными

В моем проекте одной из основных функцию будет работа с географическими координатами и другими объектами. Для этого в django существует фреймворк GeoDjango который с помощью GIS библиотек обрабатывает геоданные.
Итак, нам необходимо установить:

  1. GEOS ( Geometry Engine Open Source ) http://trac.osgeo.org/osgeo4w/
  2. PostGIS гео модуль для PostgreSQL сервера.

Установка GEOS

Для windows GEOS является библиотекой, входящей в состав пакета OSGeo4W. В общем качаем тут http://trac.osgeo.org/osgeo4w/ и устанавливаем. Мне было лень разбираться и вычлинять из установщика конкретно нужную нам библиотеку, по-этому я поставил пакет полностью )) 

Установка PostGIS

Брал тут.  http://postgis.refractions.net/download/windows/#windbinaries Обнаружил, что в комплекте уже идет библиотека GEOS.

Настройка GeoDjango

Во первых нужно в settings.py указать настройки БД
DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'travelpath',                   
        'USER': 'djangoweb',                    
        'PASSWORD': '12345678',                 
        'HOST': '127.0.0.1',                      
        'PORT': '5432',                     
    }
}
Обратите внимание, что при использовании рекомендованного по умолчанию для PostgreSQL свойства 'ENGINE': 'django.db.backends.postgresql_psycopg2' джанго не сможет работать с геоданными и будет выдавать ошибку
 AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'. И добавить в INSTALLED_APPS  строку  'django.contrib.gis'

Кроме этого необходимо прописать пути к библиотекам GEOS для того чтобы питон их мог находить. Для этого сделаем пакетный файл с таким содержанием 

set OSGEO4W_ROOT=C:\OSGeo4W
set PYTHON_ROOT=C:\Python27
set GDAL_DATA=%OSGEO4W_ROOT%\share\gdal
set PROJ_LIB=%OSGEO4W_ROOT%\share\proj
set PATH=%PATH%;%PYTHON_ROOT%;%OSGEO4W_ROOT%\bin
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /f /d "%PATH%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v GDAL_DATA /t REG_EXPAND_SZ /f /d "%GDAL_DATA%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROJ_LIB /t REG_EXPAND_SZ /f /d "%PROJ_LIB%"

или загрузим уже готовый тут https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#windows

UPD: Как оказалось django 1.4.2 не дружит с PostGIS 2.0.1 по этому нужно использовать такую связку:
  • PostgreSQL 9.0
  • PostGis 1.5

Комментариев нет:

Отправить комментарий