安装地理空间库 — Django 文档

来自菜鸟教程
Django/docs/3.0.x/ref/contrib/gis/install/geolibs
跳转至:导航、​搜索

安装地理空间库

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

程序 说明 必填 支持的版本
地球观测站 几何引擎开源 是的 3.7, 3.6, 3.5
项目4 制图投影库 是(仅限 PostgreSQL 和 SQLite) 5.2、5.1、5.0、4.x
GDAL 地理空间数据抽象库 是的 2.4, 2.3, 2.2, 2.1, 2.0
地理IP 基于IP的地理定位库 2
地理信息系统 PostgreSQL 的空间扩展 是(仅限 PostgreSQL) 2.5, 2.4, 2.3, 2.2
SpatiaLite SQLite 的空间扩展 是(仅限 SQLite) 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 是一个用于执行几何操作的 C++ 库,并且是 GeoDjango 使用的默认内部几何表示(它位于“惰性”几何背后)。 具体来说,C API 库是使用 ctypes 直接从 Python 调用的(例如,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 解压后的目录,运行配置脚本,编译安装:

$ 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 库位于非标准位置,或者您不想修改系统的库路径,那么 :setting:`GEOS_LIBRARY_PATH` 设置可能会添加到您的 Django 设置文件中,并带有完整的GEOS C 库的路径。 例如:

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

笔记

设置必须是C共享库的full路径; 换句话说,您想使用 libgeos_c.so,而不是 libgeos.so


另请参阅 我的日志中充满了与 GEOS 相关的错误


项目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 仅支持 [X35X]GDAL 的矢量数据 能力 2GEOSPROJ.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 接口,前面的说明没有构建 GDAL 自己的 Python 绑定。 可以通过在运行 configure 时添加 --with-python 标志来构建绑定。 有关 GDAL 绑定的更多信息,请参阅 Python 中的 GDAL/OGR。


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

故障排除

找不到 GDAL 库

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


GDAL_LIBRARY_PATH

如果您的 GDAL 库位于非标准位置,或者您不想修改系统的库路径,那么 :setting:`GDAL_LIBRARY_PATH` 设置可能会添加到您的 Django 设置文件中,并带有完整的GDAL 库的路径。 例如:

GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'

脚注

1
将数据转换为某些投影或从某些投影转换数据需要基准移动文件。 例如,Google 投影(900913 或 3857) 的 PROJ.4 字符串需要仅包含在额外数据移动文件中的 null 网格文件。 现在更容易安装移动文件,然后再调试由于它们不存在而导致的问题。
2
具体来说,GeoDjango 支持 OGR 库,这是 GDAL 的一个组件。