Установка геопространственных библиотек¶
Геопространственные библиотеки¶
GeoDjango использует и/или предоставляет интерфейсы для следующих геопространственных библиотек с открытым исходным кодом:
Программа |
Описание |
Необходимый |
Поддерживаемые версии |
|---|---|---|---|
GEOS |
Геометрический движок с открытым исходным кодом |
Да |
3.14, 3.13, 3.12, 3.11, 3.10, 3.9, 3.8 |
Библиотека картографических проекций |
Да (только PostgreSQL и SQLite) |
9.х, 8.х, 7.х, 6.х |
|
Библиотека абстракции геопространственных данных |
Да |
3.11, 3.10, 3.9, 3.8, 3.7, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1 |
|
Библиотека геолокации на основе IP |
Нет |
2 |
|
Пространственные расширения для PostgreSQL |
Да (только PostgreSQL) |
3.5, 3.4, 3.3, 3.2, 3.1 |
|
Пространственные расширения для 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 или Окна.
Сборка из исходников¶
При установке из исходного кода в системах UNIX и GNU/Linux внимательно следуйте инструкциям по установке и устанавливайте библиотеки в указанном порядке. Если в качестве пространственной базы данных используется MySQL или Oracle, требуется только GEOS.
Примечание
На платформах Linux может потребоваться запустить команду ldconfig после установки каждой библиотеки. Например:
$ sudo make install
$ sudo ldconfig
Примечание
Пользователи macOS должны установить Xcode, чтобы скомпилировать программное обеспечение из исходного кода.
ГЕОС¶
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.
См. также Мои журналы заполнены ошибками, связанными с GEOS,.
ПРОДЖ¶
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. Это необходимо сделать до настройки:
$ 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 в каталоге PROJ и войдите в нее:
$ cd proj-X.Y.Z
$ mkdir build
$ cd build
Наконец, настройте, создайте и установите PROJ:
$ cmake ..
$ cmake --build .
$ sudo cmake --build . --target install
ГДАЛ¶
GDAL — отличная геопространственная библиотека с открытым исходным кодом, поддерживающая чтение большинства векторных и растровых форматов пространственных данных. В настоящее время GeoDjango поддерживает только возможности векторных данных GDAL <gdal_vector_data>` [2]. ГЕОС и ПРОДЖ должны быть установлены до сборки 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'
Сноски