安装地理空间库

GeoDjango 使用和/或提供以下开源地理空间库的接口:

程序 描述 必须的 支持的版本
GEOS 几何引擎开源 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

如果你使用的是 macOSWindows,也请参考特定平台的说明。

从源码构建

在 UNIX 和 GNU/Linux 系统上从源码安装时,请仔细按照安装说明,并按照给定的顺序安装库。 如果使用 MySQL 或 Oracle 作为空间数据库,则只需要 GEOS。

备注

On Linux platforms, it may be necessary to run the ldconfig command after installing each library. For example:

$ sudo make install
$ sudo ldconfig

备注

macOS 用户必须安装 Xcode 才能从源码编译软件。

GEOS

GEOS 是一个用于执行几何运算的 C++ 库,是 GeoDjango 默认使用的内部几何表示法(它的背后是 “惰性” 的几何图形)。 具体来说,在 Python 中使用 ctypes 直接调用 C API 库(如 libgeos_c.so)。

First, download GEOS from the GEOS website and untar the source archive:

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

Then step into the GEOS directory, create a build folder, and step into it:

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

Then build and install the package:

$ 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

If your GEOS library is in a non-standard location, or you don't want to modify the system's library path then the GEOS_LIBRARY_PATH setting may be added to your Django settings file with the full path to the GEOS C library. For example:

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

备注

这个配置必须是 C 共享库的 完整 路径;换句话说,你要使用 libgeos_c.so,而不是 libgeos.so

另见 我的日志中充满了与 GEOS 有关的错误

PROJ

PROJ is a library for converting geospatial data to different coordinate reference systems.

First, download the PROJ source code:

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

... and datum shifting files (download proj-datumgrid-X.Y.tar.gz for PROJ < 7.x) [1]:

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

Next, untar the source code archive, and extract the datum shifting files in the data subdirectory (use nad subdirectory for PROJ < 6.x). This must be done prior to configuration:

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

For PROJ 9.x and greater, releases only support builds using CMake (see PROJ RFC-7).

To build with CMake ensure your system meets the build requirements. Then create a build folder in the PROJ directory, and step into it:

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

Finally, configure, make and install PROJ:

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

GDAL

GDAL 是一个优秀的开源地理空间库,它支持读取大多数矢量和栅格空间数据格式。目前 GeoDjango 只支持 GDAL 的矢量数据 的功能 [2] 。 在构建 GDAL 之前,应该安装 GEOSPROJ

First download the latest GDAL release version and untar the archive:

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

For GDAL 3.6.x and greater, releases only support builds using CMake. To build with CMake create a build folder in the GDAL directory, and step into it:

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

Finally, configure, make and install GDAL:

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

如果你有任何问题,请参见下面的故障排除部分,以获得建议和解决方案。

错误调试

找不到 GDAL 库

当 GeoDjango 找不到 GDAL 库时,在你的配置中设置你的 库环境配置 GDAL_LIBRARY_PATH

GDAL_LIBRARY_PATH

If your GDAL library is in a non-standard location, or you don't want to modify the system's library path then the GDAL_LIBRARY_PATH setting may be added to your Django settings file with the full path to the GDAL library. For example:

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 的一个组件。