安装地理空间库

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

程序

描述

必须的

支持的版本

GEOS

几何引擎开源

3.12, 3.11, 3.10, 3.9, 3.8

PROJ

制图投影库

是(仅 PostgreSQL 和 SQLite)

9.x, 8.x, 7.x, 6.x

GDAL

地理空间数据抽象库

3.8, 3.7, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0

GeoIP

基于 IP 的地理定位库

2

PostGIS

PostgreSQL 的空间扩展

是(仅 PostgreSQL)

3.4, 3.3, 3.2, 3.1, 3.0

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。

备注

在 Linux 平台上,在安装每个库之后可能需要运行 ldconfig 命令。例如:

$ sudo make install
$ sudo ldconfig

备注

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

GEOS

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

首先,从 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 是一个用于将地理空间数据转换为不同坐标参考系统的库。

首先,下载 PROJ 源代码:

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

...和数据转换文件(如果使用 PROJ < 7.x,请下载 proj-datumgrid-X.Y.tar.gz)[#]_:

$ 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. 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 ../..

对于 PROJ 9.x 及更高版本,发布版仅支持使用 CMake 进行构建(参见 PROJ RFC-7)。

要使用 CMake 进行构建,请确保您的系统满足 构建要求。然后在 PROJ 目录中创建一个名为 build 的文件夹,并进入其中:

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

最后,配置、编译和安装 PROJ:

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

GDAL

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

首先下载最新版本的 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 进行构建,请在 GDAL 目录中创建一个名为 build 的文件夹,并进入其中:

$ 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'

脚注

Back to Top