安装地理空间库 — Django 文档
安装地理空间库
GeoDjango 使用和/或为以下开源地理空间库提供接口:
程序 | 说明 | 必填 | 支持的版本 |
---|---|---|---|
地球观测站 | 几何引擎开源 | 是的 | 3.8, 3.7, 3.6, 3.5 |
项目4 | 制图投影库 | 是(仅限 PostgreSQL 和 SQLite) | 6.3、6.2、6.1、6.0、5.x、4.x |
GDAL | 地理空间数据抽象库 | 是的 | 3.1, 3.0, 2.4, 2.3, 2.2, 2.1, 2.0 |
地理IP | 基于IP的地理定位库 | 否 | 2 |
地理信息系统 | PostgreSQL 的空间扩展 | 是(仅限 PostgreSQL) | 3.0, 2.5, 2.4, 2.3, 2.2 |
SpatiaLite | SQLite 的空间扩展 | 是(仅限 SQLite) | 4.3 |
请注意,这些库 可能 的旧版本或更新版本也可以与 GeoDjango 完美配合。 你的旅费可能会改变。
在 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 是一个用于执行几何操作的 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
接下来,解压源代码存档,并在data
子目录(使用nad
PROJ < 6.x 的子目录)。 这必须在 之前完成 配置:
$ tar xzf proj-X.Y.Z.tar.gz
$ cd proj-X.Y.Z/data
$ 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 的一个组件。