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

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

Программа Описание Требуется Поддерживаемые версии
GEOS Geometry Engine с открытым исходным кодом Да 3.12, 3.11, 3.10, 3.9, 3.8
PROJ Библиотека картографических проекций Да (только PostgreSQL и SQLite) 9.x, 8.x, 7.x, 6.x, 5.x
GDAL Библиотека абстракции геопространственных данных Да 3.7, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.4
GeoIP Библиотека геолокации на основе IP Нет 2
PostGIS Пространственные расширения для PostgreSQL Да (только для PostgreSQL) 3.4, 3.3, 3.2, 3.1, 3.0, 2.5
SpatiaLite Пространственные расширения для SQLite Да (только для SQLite) 5.1, 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, создайте папку build и войдите в нее:

$ cd geos-X.Y.Z
$ mkdir build
$ cd build

Затем собрать и установить пакет:

$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build .
$ sudo cmake --build . --target install

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

Не удается найти библиотеку 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 (для PROJ < 6.x используйте подкаталог nad). Это необходимо сделать до конфигурирования:

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

Для PROJ 9.x и выше релизы поддерживают только сборки с использованием CMake (см. PROJ RFC-7).

Для сборки с использованием CMake убедитесь, что ваша система соответствует требованиям build requirements. Затем создайте в каталоге PROJ папку build и зайдите в нее:

$ cd proj-X.Y.Z
$ mkdir build
$ cd build

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

$ cmake ..
$ cmake --build .
$ sudo cmake --build . --target install

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

Для GDAL 3.6.x и выше релизы поддерживают только сборку с использованием CMake. Для сборки с использованием CMake создайте папку build в каталоге GDAL и перейдите в нее:

$ cd gdal-X.Y.Z
$ mkdir build
$ cd build

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

$ cmake ..
$ cmake --build .
$ sudo cmake --build . --target install

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

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

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

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

GDAL_LIBRARY_PATH

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

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

Сноски

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