安装地理空间库 — Django 文档
安装地理空间库
GeoDjango 使用和/或提供以下开源地理空间库的接口:
程序 | 描述 | 必须的 | 支持的版本 |
---|---|---|---|
GEOS | 几何引擎开源 | 是 | 3.7, 3.6, 3.5, 3.4 |
项目4 | 制图投影库 | 是(仅 PostgreSQL 和 SQLite) | 5.2、5.1、5.0、4.x |
GDAL | 地理空间数据抽象库 | 是 | 2.3, 2.2, 2.1, 2.0, 1.11 |
地理IP | 基于 IP 的地理定位库 | 否 | 2 |
地理信息系统 | PostgreSQL 的空间扩展 | 是(仅 PostgreSQL) | 2.5, 2.4, 2.3, 2.2, 2.1 |
SpatiaLite | SQLite 的空间扩展 | 是(仅 SQLite) | 4.3, 4.2, 4.1 |
请注意,这些库 可能 的旧版本或更新版本也可以与 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
GEOS
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 的矢量数据 能力 2。 GEOS 和 PROJ.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_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 的一个组件。