Installing Geospatial libraries

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

程序描述需要支持的版本
GEOS几何引擎开源3.4,3.3,3.2
PROJ.4制图投影图书馆是(仅PostgreSQL和SQLite)4.8,4.7,4.6,4.5,4.4
GDAL地理空间数据抽象库是(仅限SQLite)1.10,1.9,1.8,1.7
GeoIP基于IP的地理位置库没有1.4
PostGISPostgreSQL的空间扩展是(仅限PostgreSQL)2.1,2.0,1.5
SpatiaLiteSQLite的空间扩展是(仅限SQLite)4.1,4.0,3.0,2.4

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

安装GDAL

虽然技术上不需要GDAL,但建议GeoDjango的重要功能(包括LayerMapping data import utility,几何重投影和地理管理)取决于其功能。

注意

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

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

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

要考虑的可选包:

  • libgeoip1:用于GeoIP支持
  • gdal-bin:用于GDAL命令行程序,例如ogr2ogr
  • python-gdal用于GDAL自己的Python绑定 - 包括光栅操作的界面

如果您在Mac OS XWindows上,也请参阅特定平台的说明。

Building from source

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

注意

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

$ sudo make install
$ sudo ldconfig

注意

OS X用户需要安装Apple Developer Tools才能从源代码编译软件。这通常包括在您的OS X安装DVD。

GEOS

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

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

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

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

$ cd geos-3.3.8
$ ./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'

注意

The setting must be the full path to the C shared library; in other words you want to use libgeos_c.so, not 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.8.0.tar.gz
$ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz

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

$ tar xzf proj-4.8.0.tar.gz
$ cd proj-4.8.0/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/gdal-1.9.2.tar.gz
$ tar xzf gdal-1.9.2.tar.gz
$ cd gdal-1.9.2

配置,制作和安装:

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

注意

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

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

Troubleshooting

Can’t find GDAL library

当GeoDjango找不到GDAL库时,HAS_GDAL标志将为false:

>>> from django.contrib.gis import gdal
>>> gdal.HAS_GDAL
False

解决方案是在设置中正确配置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的组件)提供支持。