GeoDjango 安装Link to this heading

概况Link to this heading

一般来说,GeoDjango 安装需要:

  1. Python 和 Django

  2. 空间数据库

  3. 安装地理空间库

以下各节提供了每项要求的细节和安装说明。此外,还提供了以下平台的具体说明:

依赖项Link to this heading

Python 和 DjangoLink to this heading

因为 GeoDjango 是包含在 Django 中的,所以请参考 Django 的 安装说明 来详细了解如何安装。

空间数据库Link to this heading

目前支持的空间数据库有 PostgreSQL(含 PostGIS)、MySQL(主要含 MyISAM 引擎)、Oracle 和 SQLite(含 SpatiaLite)。

GeoDjango 安装所需的地理空间库取决于所使用的空间数据库。 下面列出了每个支持的数据库后端的库需求、支持的版本和任何注释。

数据库

库依赖项

支持的版本

注意

PostgreSQL

GEOS, GDAL, PROJ, PostGIS

9.6+

需要 PostGIS。

MySQL

GEOS, GDAL

5.7+

功能受限

Oracle

GEOS, GDAL

12.2+

不支持 XE。

SQLite

GEOS, GDAL, PROJ, SpatiaLite

3.9.0+

需要 SpatiaLite 4.3+

关于 PostgreSQL/PostGIS/GEOS/GDAL的可能组合,也请参见 OSGeo Wiki 上的 `这个比较矩阵`__

安装Link to this heading

地理空间库Link to this heading

数据库安装Link to this heading

DATABASES 配置Link to this heading

ENGINE 设置为 空间后端 之一。

添加 django.contrib.gisINSTALLED_APPSLink to this heading

和其他 Django contrib 应用一样,你只需要在配置中的 INSTALLED_APPS 中添加 django.contrib.gis。这是为了让 gis 模板能够被定位 —— 如果不这样做,那么诸如地理管理或 KML 网站地图等功能将无法正常运行。

错误调试Link to this heading

如果你在这里找不到解决问题的方法,那就参与社区吧!你可以:

  • Join the #django-geo IRC channel on Libera.Chat. Please be patient and polite -- while you may not get an immediate response, someone will attempt to answer your question as soon as they see it.

  • Ask your question on the `GeoDjango`__ forum.

  • 如果你认为有 bug,请在 `Django trac`__ 上提交一个工单。 确保提供完整的问题描述,使用的版本,并指定组件为 “GIS”。

库环境配置Link to this heading

到目前为止,安装 GeoDjango 时最常见的问题是无法找到外部共享库(例如 GEOS 和 GDAL)。[1] 通常情况下,造成这个问题的原因是操作系统不知道从源码建立的库的安装目录。

一般情况下,库路径可以通过设置环境变量按每个用户来设置,也可以为整个系统配置库路径。

LD_LIBRARY_PATH 环境变量Link to this heading

用户可以设置这个环境变量来定制他们想要使用的库路径。 典型的从源代码构建的软件的库目录是 /usr/local/lib。 因此,/usr/local/lib 需要包含在 LD_LIBRARY_PATH 变量中。 例如,用户可以在其 bash 配置文件中加入以下内容:

Shell
export LD_LIBRARY_PATH=/usr/local/lib

设置系统库路径Link to this heading

在 GNU/Linux 系统中,通常在 /etc/ld.so.conf 中会有一个文件,其中可能包括来自另一个目录中的文件的附加路径,例如 /etc/ld.so.conf.d。作为 root 用户,在 ld.so.conf 中的新行中添加自定义库路径(如 /usr/local/lib)。 这是 一个 例子:

Shell
$ sudo echo /usr/local/lib >> /etc/ld.so.conf
$ sudo ldconfig

对于 OpenSolaris 用户,可以使用 crle 工具修改系统库路径。 运行 crle 时不要有任何选项,以查看当前的配置,并使用 crle -l 来设置新的库路径。 修改系统库路径时要 非常 小心:

Shell
# crle -l $OLD_PATH:/usr/local/lib

安装 binutilsLink to this heading

GeoDjango 使用 find_library 函数(来自 ctypes.util Python 模块)来发现库。 find_library 例程使用一个叫做 objdump 的程序(binutils 包的一部分)来验证 GNU/Linux 系统的共享库。 因此,如果 binutils 没有安装在你的 Linux 系统上,那么 Python 的 ctypes 可能无法找到你的库,即使你的库路径设置正确,并且地理空间库建立得很完美。

可以使用以下命令在 Debian 和 Ubuntu 系统上安装 binutils 包:

Shell
$ sudo apt-get install binutils

同样,在 Red Hat 和 CentOS 系统上:

Shell
$ sudo yum install binutils

特定平台说明Link to this heading

macOSLink to this heading

由于 macOS 的打包系统多种多样,用户在安装 GeoDjango 时有几种不同的选择。这些选择是:

这一节还包含了从 Python 软件基金会提供的软件包中安装升级版 Python 的说明,但是,这不是必须的。

PythonLink to this heading

虽然 macOS 安装了 Python,但用户可以使用 Python 软件基金会提供的 `框架安装程序`__ 。 使用安装程序的一个好处是,macOS 的 Python 将保持 “原始” 状态,供操作系统内部使用。

Postgres.appLink to this heading

Postgres.app 是一个独立的 PostgreSQL 服务,包括 PostGIS 扩展。你还需要安装 gdallibgeoip,并安装 Homebrew

安装 Postgres.app 后,在你的 .bash_profile 中添加以下内容,这样你就可以在命令行中运行软件包的程序。用你安装的 Postgres.app 中的 PostgreSQL 版本替换 X.Y

Shell
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/X.Y/bin

你可以在终端提示符下输入 which psql 检查路径是否设置正确。

HomebrewLink to this heading

`Homebrew`__ 提供了从源码中构建二进制文件和软件包的 “菜谱”。它为运行 macOS 的 Macintosh 电脑提供了 GeoDjango 的先决条件。因为 Homebrew 仍然从源码构建软件,所以需要使用 Xcode

摘要:

Shell
$ brew install postgresql
$ brew install postgis
$ brew install gdal
$ brew install libgeoip

KyngChaos 包Link to this heading

William Kyngesburye 提供了一些 `地理空间库二进制包`__ ,可以帮助在 macOS 上安装 GeoDjango,而不需要从源码编译。 然而,Xcode 仍然需要编译 Python 数据库适配器 psycopg2 (用于 PostGIS)。

下载框架包,用于:

  • UnixImageIO

  • PROJ

  • GEOS

  • SQLite3 (包括 SpatiaLite 库)

  • GDAL

按照上面列出的顺序安装包,因为 GDAL 和 SQLite 包需要前面列出的包。

之后,你还可以安装 KyngChaos 二进制包,用于 `PostgreSQL 和 PostGIS`__

安装完二进制包后,你需要在你的 .profile 中添加以下内容,以便能够从命令行运行包程序:

Shell
export PATH=/Library/Frameworks/UnixImageIO.framework/Programs:$PATH
export PATH=/Library/Frameworks/PROJ.framework/Programs:$PATH
export PATH=/Library/Frameworks/GEOS.framework/Programs:$PATH
export PATH=/Library/Frameworks/SQLite3.framework/Programs:$PATH
export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH
export PATH=/usr/local/pgsql/bin:$PATH
psycopg2Link to this heading

在安装了 KyngChaos 二进制文件并修改了 PATH 后,可以使用以下命令安装 psycopg2

Shell
$ python -m pip install psycopg2
FinkLink to this heading

`Kurt Schwehr`__ 很慷慨地为 `Fink`__ 包系统的用户创建了 GeoDjango 包。根据你想使用的 Python 版本,可以使用不同的包(从 django-gis 开始)。

MacPortsLink to this heading

`MacPorts`__ 可以用来在运行 macOS 的计算机上安装 GeoDjango 的先决条件。 因为 MacPorts 仍然从源码构建软件,所以需要使用 Xcode

摘要:

Shell
$ sudo port install postgresql93-server
$ sudo port install geos
$ sudo port install proj
$ sudo port install postgis
$ sudo port install gdal +geos
$ sudo port install libgeoip

WindowsLink to this heading

为了在 Windows 上安装 GeoDjango,请依次完成以下章节。在本教程中,我们将安装每个应用程序的 64 位版本。

PythonLink to this heading

安装一个 64 位版本的 Python。更多信息请参见 安装 Python

PostgreSQLLink to this heading

`EnterpriseDB`__ 网站下载最新的 `PostgreSQL 12.x 安装程序`__ 。 下载后,运行安装程序,按照屏幕上的指示,保持默认选项,除非你知道改变这些选项的后果。

当安装程序完成时,它会询问 “在退出时启动 Stack Builder?” —— 请确定这个问题,因为需要安装 PostGIS

PostGISLink to this heading

在堆栈生成器中(如果要在安装程序之外运行, Start ‣ PostgreSQL 12 ‣ Application Stack Builder),从下拉菜单中选择 PostgreSQL 12 (x64) on port 5432,然后点击下一步。展开 Categories ‣ Spatial Extensions 菜单树,选择 PostGIS X.Y for PostgreSQL 12

点击下一步后,会提示你确认选择的软件包和 “下载目录”。再次点击下一步,这将下载 PostGIS,并要求你点击下一步开始 PostGIS 安装程序。在安装过程中选择默认选项。安装过程中包括三个 “是/否” 对话框,三个对话框的默认选项都是 “否”。

OSGeo4WLink to this heading

OSGeo4W 安装程序 有助于安装 GeoDjango 所需的 PROJ、GDAL 和 GEOS 库。首先,下载 `OSGeo4W 安装程序`_ (64 位),并运行它。选择 Express Web-GIS Install,点击下一步。 在 “Select Packages” 列表中,确保选择 GDAL;MapServer 也是默认启用的,但 GeoDjango 不需要,可以放心地取消勾选。点击下一步并接受许可协议后,包将自动下载并安装,之后可以退出安装程序。

修改 Windows 环境Link to this heading

为了使用 GeoDjango,你需要将 OSGeo4W 目录添加到 Windows 系统的 Path 中,并创建 GDAL_DATAPROJ_LIB 环境变量。 下面这组命令可以用 cmd.exe 执行,用于设置。设置完成后,请重新启动设备,以便识别新的环境变量。

Bat
set OSGEO4W_ROOT=C:\OSGeo4W64
set GDAL_DATA=%OSGEO4W_ROOT%\share\gdal
set PROJ_LIB=%OSGEO4W_ROOT%\share\proj
set PATH=%PATH%;%OSGEO4W_ROOT%\bin
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /f /d "%PATH%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v GDAL_DATA /t REG_EXPAND_SZ /f /d "%GDAL_DATA%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROJ_LIB /t REG_EXPAND_SZ /f /d "%PROJ_LIB%"

安装 Django 并建立数据库Link to this heading

安装 Django 在你的系统上。建议你为每个项目创建一个 虚拟环境

psycopg2Link to this heading

psycopg2 Python 模块提供 Python 和 PostgreSQL 数据库之间的接口。psycopg2 可以在 Python 虚拟环境中通过 pip 安装:

Shell
...\> py -m pip install psycopg2

脚注