Установка геопространственных библиотек
GeoDjango использует и/или предоставляет интерфейсы для следующих открытых геопространственных библиотек:
| Программа | Описание | Требуется | Поддерживаемые версии |
|---|---|---|---|
| GEOS | Geometry Engine Open Source | Да | 3.7, 3.6, 3.5, 3.4 |
| PROJ.4 | Библиотека картографических проекций | Да (только PostgreSQL и SQLite) | 5.2, 5.1, 5.0, 4.x |
| GDAL | Geospatial Data Abstraction Library | Да | 2.3, 2.2, 2.1, 2.0, 1.11 |
| GeoIP | Библиотека геолокации по IP-адресам | Нет | 2 |
| PostGIS | Пространственные расширения для PostgreSQL | Да (только PostgreSQL) | 2.5, 2.4, 2.3, 2.2, 2.1 |
| SpatiaLite | Пространственные расширения для SQLite | Да (только SQLite) | 4.3, 4.2, 4.1 |
Обратите внимание, что более старые или более новые версии этих библиотек могут также работать с 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, запустите скрипт конфигурации, скомпилируйте и установите:
$ 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 находится в нестандартном расположении или вы не хотите изменять системный путь к библиотекам, то можно добавить настройку GEOS_LIBRARY_PATH в ваш файл настроек Django с полным путем к библиотеке GEOS C. Например:
GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'
Примечание
Настройка должна содержать полный путь к C библиотеке общего использования; другими словами, вам нужно использовать libgeos_c.so, а не libgeos.so.
См. также Мои логи заполнены ошибками, связанными с GEOS.
PROJ.4
PROJ.4 — это библиотека для преобразования геопространственных данных в различные системы координат.
Сначала загрузите исходный код PROJ.4 и файлы сдвига данных [1]:
$ wget https://download.osgeo.org/proj/proj-X.Y.Z.tar.gz $ wget https://download.osgeo.org/proj/proj-datumgrid-X.Y.tar.gz
Затем распакуйте исходный код и извлеките файлы сдвига данных в подкаталог nad. Это необходимо сделать до конфигурации:
$ tar xzf proj-X.Y.Z.tar.gz $ cd proj-X.Y.Z/nad $ tar xzf ../../proj-datumgrid-X.Y.tar.gz $ cd ..
Наконец, сконфигурируйте, создайте и установите PROJ.4:
$ ./configure $ make $ sudo make install $ cd ..
GDAL
GDAL — отличная открытая геопространственная библиотека, поддерживающая чтение большинства форматов векторных и растровых пространственных данных. В настоящее время GeoDjango поддерживает только возможности векторных данных GDAL [2]. GEOS и PROJ.4 должны быть установлены перед сборкой 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 интерфейс, приведенные выше инструкции не создают собственные Python-связки GDAL. Связки можно создать, добавив флаг --with-python при запуске configure. См. GDAL/OGR In Python для получения дополнительной информации о связках GDAL.
Если у вас возникнут проблемы, см. раздел отладки ниже для советов и решений.
Отладка
Не удаётся найти библиотеку 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.4 для проекции Google (900913 или 3857) требует файл сетки null, который включён только в дополнительных файлах сдвига данных. Проще установить файлы сдвига сейчас, чем потом искать причину проблемы из-за их отсутствия. |
| [2] | В частности, GeoDjango поддерживает библиотеку OGR, являющуюся компонентом GDAL. |
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.2/ref/contrib/gis/install/geolibs/