GeoDjango 使用和/或提供以下开源地理空间库的接口:
程序 | 描述 | 必须的 | 支持的版本 |
---|---|---|---|
GEOS | 几何引擎开源 | 是 | 3.11, 3.10, 3.9, 3.8, 3.7, 3.6 |
PROJ | 制图投影库 | 是(仅 PostgreSQL 和 SQLite) | 9.x, 8.x, 7.x, 6.x, 5.x |
GDAL | 地理空间数据抽象库 | 是 | 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.4, 2.3, 2.2 |
GeoIP | 基于 IP 的地理定位库 | 否 | 2 |
PostGIS | PostgreSQL 的空间扩展 | 是(仅 PostgreSQL) | 3.3, 3.2, 3.1, 3.0, 2.5 |
SpatiaLite | SQLite 的空间扩展 | 是(仅 SQLite) | 5.0, 4.3 |
请注意,这些库的老版本或最新版本可能也能与 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。
备注
On Linux platforms, it may be necessary to run the ldconfig
command
after installing each library. For example:
$ sudo make install
$ sudo ldconfig
备注
macOS 用户必须安装 Xcode 才能从源码编译软件。
GEOS 是一个用于执行几何运算的 C++ 库,是 GeoDjango 默认使用的内部几何表示法(它的背后是 “惰性” 的几何图形)。 具体来说,在 Python 中使用 ctypes 直接调用 C API 库(如 libgeos_c.so
)。
First, download GEOS from the GEOS website and untar the source archive:
$ wget https://download.osgeo.org/geos/geos-X.Y.Z.tar.bz2
$ tar xjf geos-X.Y.Z.tar.bz2
Then step into the GEOS directory, create a build
folder, and step into
it:
$ cd geos-X.Y.Z
$ mkdir build
$ cd build
Then build and install the package:
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build .
$ sudo cmake --build . --target install
当 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
¶If your GEOS library is in a non-standard location, or you don't want to
modify the system's library path then the GEOS_LIBRARY_PATH
setting may be added to your Django settings file with the full path to the
GEOS C library. For example:
GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'
备注
这个配置必须是 C 共享库的 完整 路径;换句话说,你要使用 libgeos_c.so
,而不是 libgeos.so
。
PROJ is a library for converting geospatial data to different coordinate reference systems.
First, download the PROJ source code:
$ wget https://download.osgeo.org/proj/proj-X.Y.Z.tar.gz
... and datum shifting files (download proj-datumgrid-X.Y.tar.gz
for
PROJ < 7.x) [1]:
$ wget https://download.osgeo.org/proj/proj-data-X.Y.tar.gz
Next, untar the source code archive, and extract the datum shifting files in the
data
subdirectory (use nad
subdirectory for PROJ < 6.x). This must be
done prior to configuration:
$ tar xzf proj-X.Y.Z.tar.gz
$ cd proj-X.Y.Z/data
$ tar xzf ../../proj-data-X.Y.tar.gz
$ cd ../..
For PROJ 9.x and greater, releases only support builds using CMake
(see
PROJ RFC-7).
To build with CMake
ensure your system meets the build requirements.
Then create a build
folder in the PROJ directory, and step into it:
$ cd proj-X.Y.Z
$ mkdir build
$ cd build
Finally, configure, make and install PROJ:
$ cmake ..
$ cmake --build .
$ sudo cmake --build . --target install
GDAL 是一个优秀的开源地理空间库,它支持读取大多数矢量和栅格空间数据格式。目前 GeoDjango 只支持 GDAL 的矢量数据 的功能 [2] 。 在构建 GDAL 之前,应该安装 GEOS 和 PROJ。
First download the latest GDAL release version and untar the archive:
$ wget https://download.osgeo.org/gdal/X.Y.Z/gdal-X.Y.Z.tar.gz
$ tar xzf gdal-X.Y.Z.tar.gz
For GDAL 3.6.x and greater, releases only support builds using CMake
. To
build with CMake
create a build
folder in the GDAL directory, and step
into it:
$ cd gdal-X.Y.Z
$ mkdir build
$ cd build
Finally, configure, make and install GDAL:
$ cmake ..
$ cmake --build .
$ sudo cmake --build . --target install
如果你有任何问题,请参见下面的故障排除部分,以获得建议和解决方案。
当 GeoDjango 找不到 GDAL 库时,在你的配置中设置你的 库环境配置 或 GDAL_LIBRARY_PATH。
GDAL_LIBRARY_PATH
¶If your GDAL library is in a non-standard location, or you don't want to
modify the system's library path then the GDAL_LIBRARY_PATH
setting may be added to your Django settings file with the full path to
the GDAL library. For example:
GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'
脚注
[1] | The datum shifting files are needed for converting data to and from
certain projections.
For example, the PROJ string for the Google projection (900913 or 3857) requires the
null grid file only included in the extra datum shifting files.
It is easier to install the shifting files now, then to have debug a
problem caused by their absence later. |
[2] | 具体来说,GeoDjango 提供了对 OGR 库的支持,这是 GDAL 的一个组件。 |
5月 12, 2023