Установка геопространственных библиотек

GeoDjango использует и/или предоставляет интерфейсы для следующих геопространственных библиотек с открытым исходным кодом:

Программа Описание Требуется Поддерживаемые версии
GEOS Geometry Engine с открытым исходным кодом Да 3.10, 3.9, 3.8, 3.7, 3.6
PROJ Библиотека картографических проекций Да (только PostgreSQL и SQLite) 8.x, 7.x, 6.x, 5.x, 4.x
GDAL Библиотека абстракции геопространственных данных Да 3.3, 3.2, 3.1, 3.0, 2.4, 2.3, 2.2, 2.1
GeoIP Библиотека геолокации на основе IP Нет 2
PostGIS Пространственные расширения для PostgreSQL Да (только для PostgreSQL) 3.1, 3.0, 2.5, 2.4
SpatiaLite Пространственные расширения для SQLite Да (только для SQLite) 5.0, 4.3

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

Примечание

Интерфейсы GeoDjango для GEOS, GDAL и GeoIP могут использоваться независимо от Django. Другими словами, не требуется база данных или файл настроек - импортируйте их как обычно из django.contrib.gis.

На Debian/Ubuntu рекомендуется установить следующие пакеты, которые напрямую или через зависимость установят необходимые геопространственные библиотеки:

$ sudo apt-get install binutils libproj-dev gdal-bin

Обратитесь также к инструкциям для конкретной платформы, если вы работаете на macOS или Windows.

Создание из исходного материала

При установке из исходного кода на UNIX и GNU/Linux системы, пожалуйста, внимательно следуйте инструкциям по установке и устанавливайте библиотеки в указанном порядке. При использовании MySQL или Oracle в качестве пространственной базы данных требуется только GEOS.

Примечание

На платформах Linux может потребоваться выполнить команду ldconfig после установки каждой библиотеки. Например:

$ sudo make install
$ sudo ldconfig

Примечание

Пользователи macOS должны установить Xcode для компиляции программ из исходных текстов.

GEOS

GEOS - это библиотека C++ для выполнения геометрических операций, которая является внутренним представлением геометрии по умолчанию, используемым GeoDjango (она стоит за «ленивыми» геометриями). В частности, библиотека C API вызывается (например, libgeos_c.so) непосредственно из Python с помощью ctypes.

Сначала загрузите GEOS с веб-сайта GEOS и распакуйте исходный архив:

$ wget https://download.osgeo.org/geos/geos-X.Y.Z.tar.bz2
$ tar xjf geos-X.Y.Z.tar.bz2

Затем перейдите в каталог, куда была распакована GEOS, запустите сценарий configure, скомпилируйте и установите:

$ cd geos-X.Y.Z
$ ./configure
$ make
$ sudo make install
$ cd ..

Устранение неполадок

Не удается найти библиотеку GEOS

Когда GeoDjango не может найти GEOS, возникает эта ошибка:

ImportError: Could not find the GEOS library (tried "geos_c"). Try setting GEOS_LIBRARY_PATH in your settings.

Наиболее распространенным решением является правильная настройка Настройки библиотечной среды или установка GEOS_LIBRARY_PATH в настройках.

Если используется бинарный пакет GEOS (например, на Ubuntu), вам может понадобиться Установить binutils.

GEOS_LIBRARY_PATH

Если ваша библиотека GEOS находится в нестандартном месте или вы не хотите изменять системный путь к библиотеке, то в файл настроек Django можно добавить параметр GEOS_LIBRARY_PATH с полным путем к библиотеке GEOS C. Например:

GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'

Примечание

В качестве параметра должен быть указан полный путь к общей библиотеке C; другими словами, вы хотите использовать libgeos_c.so, а не libgeos.so.

См. также My logs are filled with GEOS-related errors.

ПРОЕКТ

PROJ - это библиотека для преобразования геопространственных данных в различные системы отсчета координат.

Сначала загрузите исходный код PROJ:

$ wget https://download.osgeo.org/proj/proj-X.Y.Z.tar.gz

… и файлы сдвига дат (скачать proj-datumgrid-X.Y.tar.gz для PROJ < 7.x) [1]:

$ wget https://download.osgeo.org/proj/proj-data-X.Y.tar.gz

Затем распакуйте архив с исходным кодом и извлеките файлы сдвига дат в подкаталог data (используйте подкаталог nad для PROJ < 6.x). Это должно быть сделано до конфигурации:

$ tar xzf proj-X.Y.Z.tar.gz
$ cd proj-X.Y.Z/data
$ tar xzf ../../proj-data-X.Y.tar.gz
$ cd ..

Наконец, настройте, сделайте и установите PROJ:

$ ./configure
$ make
$ sudo make install
$ cd ..

GDAL

GDAL - это отличная геопространственная библиотека с открытым исходным кодом, которая поддерживает чтение большинства векторных и растровых форматов пространственных данных. В настоящее время GeoDjango поддерживает только GDAL’s vector data возможности [2]. GEOS и ПРОЕКТ должны быть установлены до сборки GDAL.

Сначала загрузите последнюю версию релиза GDAL и распакуйте архив:

$ wget https://download.osgeo.org/gdal/X.Y.Z/gdal-X.Y.Z.tar.gz
$ tar xzf gdal-X.Y.Z.tar.gz
$ cd gdal-X.Y.Z

Настройка, изготовление и установка:

$ ./configure
$ make # Go get some coffee, this takes a while.
$ sudo make install
$ cd ..

Примечание

Поскольку GeoDjango имеет свой собственный интерфейс Python, предыдущие инструкции не создают собственные привязки GDAL к Python. Связки могут быть созданы путем добавления флага --with-python при выполнении configure. Более подробную информацию о связках GDAL смотрите в GDAL/OGR In Python.

Если у вас возникли какие-либо проблемы, обратитесь к разделу «Поиск и устранение неисправностей», где приведены предложения и решения.

Устранение неполадок

Не удается найти библиотеку GDAL

Когда GeoDjango не может найти библиотеку GDAL, настройте Настройки библиотечной среды или установите GDAL_LIBRARY_PATH в настройках.

GDAL_LIBRARY_PATH

Если ваша библиотека GDAL находится в нестандартном месте, или вы не хотите изменять системный путь к библиотеке, то параметр GDAL_LIBRARY_PATH может быть добавлен в файл настроек Django с полным путем к библиотеке GDAL. Например:

GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'

Сноски

[1]Файлы сдвига точек отсчета необходимы для преобразования данных в определенные проекции и обратно. Например, для строки PROJ для Google projection (900913 or 3857) требуется файл сетки null, который входит только в дополнительные файлы сдвига точек отсчета. Проще установить файлы сдвига сейчас, чем потом отлаживать проблему, вызванную их отсутствием.
[2]В частности, GeoDjango обеспечивает поддержку библиотеки OGR, компонента GDAL.
Вернуться на верх