Установка геопространственных библиотек¶
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] | The datum shifting files are needed for converting data to and from
certain projections.
For example, the PROJ string for the Google projection (900913 or 3857) requires the null
grid file only included in the extra datum shifting files. It is easier
to install the shifting files now, then to have debug a problem caused
by their absence later. |
[2] | В частности, GeoDjango обеспечивает поддержку библиотеки OGR, компонента GDAL. |