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完全正常。 您的里程可能不同。
在旧版本中,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绑定 - 包括光栅操作的界面在UNIX和GNU / Linux系统上从源安装时,请按照安装说明进行操作,并按给定顺序安装库。 如果使用MySQL或Oracle作为空间数据库,则只需要GEOS。
注
在Linux平台上,安装每个库后可能需要运行ldconfig
命令。 像这样:
$ sudo make install
$ sudo ldconfig
注
macOS用户必须安装Xcode才能从源代码编译软件。
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 ..
当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
。
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是一个优秀的开源地理空间库,支持读取大多数矢量和栅格空间数据格式。 目前,GeoDjango只支持GDAL’s vector data能力[2]。 应在建造GDAL之前安装GEOS和PROJ.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。
如果您有任何问题,请参阅下面的故障排除部分的建议和解决方案。
当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的组件)提供支持。 |
2017年9月6日