Установка Spatialite
SpatiaLite добавляет пространственную поддержку в SQLite, превращая его в полнофункциональную пространственную базу данных.
Сначала проверьте, можно ли установить SpatiaLite из системных пакетов или библиотек. Например, в дистрибутивах на основе Debian попробуйте установить пакет spatialite-bin. Для Mac OS X следуйте специфическим инструкциям ниже. Для Windows вы можете найти бинарные файлы на странице Gaia-SINS. В любом случае, вы всегда сможете установить из исходного кода.
После завершения процесса установки перейдите к созданию пространственной базы данных для SpatiaLite.
Установка из исходного кода
GEOS и PROJ.4 должны быть установлены до компиляции SpatiaLite.
SQLite
Сначала проверьте, скомпилирован ли SQLite с модулем R*Tree. Запустите командную строку sqlite3 и введите следующую команду:
sqlite> CREATE VIRTUAL TABLE testrtree USING rtree(id,minX,maxX,minY,maxY);
Если вы получите ошибку, вам придется перекомпилировать SQLite из исходного кода. В противном случае просто пропустите этот раздел.
Для установки из исходного кода загрузите последнюю архивную сборку исходного кода с страницы загрузки SQLite и распакуйте её:
$ wget http://sqlite.org/sqlite-amalgamation-3.6.23.1.tar.gz $ tar xzf sqlite-amalgamation-3.6.23.1.tar.gz $ cd sqlite-3.6.23.1
Затем запустите скрипт configure – однако переменной среды CFLAGS необходимо настроить так, чтобы SQLite знал, как скомпилировать модуль R*Tree:
$ CFLAGS="-DSQLITE_ENABLE_RTREE=1" ./configure $ make $ sudo make install $ cd ..
Библиотека SpatiaLite (libspatialite)
Получите последнюю сборку исходного кода библиотеки SpatiaLite с страницы загрузки:
$ wget http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-4.1.0.tar.gz $ tar xaf libspatialite-4.1.0.tar.gz $ cd libspatialite-4.1.0 $ ./configure $ make $ sudo make install
Примечание
Для пользователей Mac OS X, компилирующих из исходного кода, библиотеке SpatiaLite и инструментам необходимо настроить target:
$ ./configure --target=macosx
pysqlite2
Если вы решили использовать новую версию pysqlite2 вместо модуля sqlite3 стандартной библиотеки Python, то вам необходимо убедиться, что он может загружать внешние расширения (то есть, необходимый метод enable_load_extension доступен, чтобы SpatiaLite мог быть загружен).
Это может потребовать самостоятельной компиляции. Для этого загрузите pysqlite2 2.6 и распакуйте его:
$ wget https://pypi.python.org/packages/source/p/pysqlite/pysqlite-2.6.3.tar.gz $ tar xzf pysqlite-2.6.3.tar.gz $ cd pysqlite-2.6.3
Затем используйте текстовый редактор, чтобы изменить файл setup.cfg следующим образом:
[build_ext] #define= include_dirs=/usr/local/include library_dirs=/usr/local/lib libraries=sqlite3 #define=SQLITE_OMIT_LOAD_EXTENSION
или если вы работаете на Mac OS X:
[build_ext] #define= include_dirs=/Library/Frameworks/SQLite3.framework/unix/include library_dirs=/Library/Frameworks/SQLite3.framework/unix/lib libraries=sqlite3 #define=SQLITE_OMIT_LOAD_EXTENSION
Примечание
Важным моментом здесь является то, что вы должны закомментировать флаг define=SQLITE_OMIT_LOAD_EXTENSION, и что параметры include_dirs и library_dirs должны быть разкоментированы и установлены в соответствующий путь, если файлы заголовков и библиотеки SQLite не находятся в /usr/include и /usr/lib соответственно.
После соответствующей модификации setup.cfg, запустите скрипт setup.py для сборки и установки:
$ python setup.py install
Инструкции, специфичные для Mac OS X
Для установки библиотеки и инструментов SpatiaLite пользователи Mac OS X могут выбрать пакеты KyngChaos и Homebrew.
KyngChaos
Сначала следуйте инструкциям в разделе пакетов KyngChaos.
При создании пространственной базы данных для SpatiaLite требуется программа spatialite. Однако вместо попытки скомпилировать инструменты SpatiaLite из исходного кода загрузите бинарные файлы SpatiaLite для OS X и установите spatialite в место, доступное в вашей PATH. Например:
$ curl -O http://www.gaia-gis.it/spatialite/spatialite-tools-osx-x86-2.3.1.tar.gz $ tar xzf spatialite-tools-osx-x86-2.3.1.tar.gz $ cd spatialite-tools-osx-x86-2.3.1/bin $ sudo cp spatialite /Library/Frameworks/SQLite3.framework/Programs
Наконец, чтобы GeoDjango смог найти библиотеку SpatiaLite KyngChaos, добавьте следующее в вашу settings.py:
SPATIALITE_LIBRARY_PATH='/Library/Frameworks/SQLite3.framework/SQLite3'
Homebrew
Homebrew обрабатывает все пакеты, связанные со SpatiaLite, от вашего имени, включая SQLite3, SpatiaLite, PROJ и GEOS. Установите их так:
$ brew update $ brew install spatialite-tools $ brew install gdal
Наконец, чтобы GeoDjango смог найти библиотеку SpatiaLite, добавьте следующее в вашу settings.py:
SPATIALITE_LIBRARY_PATH='/usr/local/lib/mod_spatialite.dylib'
Создание пространственной базы данных для SpatiaLite
При запуске manage.py migrate с базой данных SQLite или SpatiaLite, файл базы данных будет автоматически создан, если он не существует. Django также позаботится о том, чтобы пространственные метаданные были инициализированы в базе данных.
До Django 1.8 вам нужно было самостоятельно инициализировать таблицы пространственных метаданных, вручную выполняя запрос «SELECT InitSpatialMetaData();».
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/contrib/gis/install/spatialite/