Installing Geospatial libraries

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

程序 描述 需要 支持的版本
GEOS 几何引擎开源 3.5,3.4,3.3
PROJ.4 制图投影图书馆 是(仅PostgreSQL和SQLite) 4.9,4.8,4.7,4.6,4.5,4.4
GDAL 地理空间数据抽象库 2.1,2.0,1.11,1.10,1.9
GeoIP的 基于IP的地理位置库 没有 2
PostGIS的 PostgreSQL的空间扩展 是(仅限PostgreSQL) 2.3,2.2,2.1
SpatiaLite SQLite的空间扩展 是(仅限SQLite) 4.3,4.2,4.1,4.0

请注意,这些库的旧版本或更新版本可能也可以与GeoDjango完全正常。 您的里程可能不同。

在Django更改1.11:

在旧版本中,GDAL仅适用于SQLite。 现在这是所有数据库所必需的。

与GEOS,GDAL和GeoIP的GeoDjango接口可以独立于Django使用。 换句话说,不需要数据库或设置文件 - 只需从django.contrib.gis正常导入它们。

在Debian / Ubuntu上,建议安装以下软件包,这些软件包将直接或依赖性安装所需的地理空间库:

$ sudo apt-get install binutils libproj-dev gdal-bin

要考虑的可选包:

  • libgeoip1:用于GeoIP支持
  • python-gdal用于GDAL自己的Python绑定 - 包括光栅操作的界面

如果您在macOSWindows上,请参阅平台特定说明。

Building from source

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

在Linux平台上,安装每个库后可能需要运行ldconfig命令。 像这样:

$ sudo make install
$ sudo ldconfig

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

GEOS

GEOS是一个用于执行几何操作的C ++库,是GeoDjango使用的默认内部几何表示(它位于“延迟”几何体之后)。 具体来说,使用ctypes直接从Python调用C API库(例如,libgeos_c.so)。

首先,从GEOS网站下载GEOS 3.4.2,并解压缩源文件:

$ wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
$ tar xjf geos-3.4.2.tar.bz2

接下来,切换到解压缩GEOS的目录,运行configure脚本,编译并安装:

$ cd geos-3.4.2
$ ./configure
$ make
$ sudo make install
$ cd ..

Troubleshooting

Can’t find GEOS library

当GeoDjango找不到GEOS时,会出现此错误:

ImportError: Could not find the GEOS library (tried "geos_c"). Try setting GEOS_LIBRARY_PATH in your settings.

最常见的解决方法是在设置中正确配置Library environment settings 设置GEOS_LIBRARY_PATH

如果使用GEOS的二进制包(例如,在Ubuntu上),您可能需要Install binutils

GEOS_LIBRARY_PATH

如果您的GEOS库位于非标准位置,或者您不想修改系统的库路径,则可以将GEOS_LIBRARY_PATH设置添加到您的Django设置文件中,其中包含GEOS的完整路径C库。 像这样:

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

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

另请参阅My logs are filled with GEOS-related errors

PROJ.4

PROJ.4是一个将地理空间数据转换为不同坐标参考系的库。

首先,下载PROJ.4源代码和原点平移文件[1]

$ wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz
$ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz

接下来,解开源代码归档,并提取nad子目录中的原点移动文件。 这必须在之前完成配置:

$ tar xzf proj-4.9.1.tar.gz
$ cd proj-4.9.1/nad
$ tar xzf ../../proj-datumgrid-1.5.tar.gz
$ cd ..

最后,配置,制作和安装PROJ.4:

$ ./configure
$ make
$ sudo make install
$ cd ..

GDAL

GDAL是一个优秀的开源地理空间库,支持读取大多数矢量和栅格空间数据格式。 目前,GeoDjango只支持GDAL’s vector data能力[2] 应在建造GDAL之前安装GEOSPROJ.4

首先下载最新的GDAL版本并解压存档:

$ wget http://download.osgeo.org/gdal/1.11.2/gdal-1.11.2.tar.gz
$ tar xzf gdal-1.11.2.tar.gz
$ cd gdal-1.11.2

配置,制作和安装:

$ ./configure
$ make # Go get some coffee, this takes a while.
$ sudo make install
$ cd ..

因为GeoDjango有自己的Python接口,上面的指令不会构建GDAL自己的Python绑定。 可以通过在运行--with-python时添加configure标志来构建绑定。 有关GDAL的绑定的更多信息,请参见GDAL / OGR在Python

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

Troubleshooting

Can’t find GDAL library

当GeoDjango找不到GDAL库时,请在设置中配置Library environment settings 设置GDAL_LIBRARY_PATH

GDAL_LIBRARY_PATH

如果您的GDAL库位于非标准位置,或者您不想修改系统的库路径,则可以将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的组件)提供支持。