安装 PostGIS

GEOSPROJGDAL 应在构建 PostGIS 之前安装。你可能还需要额外的库,参见 PostGIS 要求

当使用 GeoDjango 和 PostGIS 时,需要使用 psycopg2 模块作为数据库适配器。

在 Debian/Ubuntu 上,建议你安装以下软件包:postgresql-x.x、postgresql-x.x-postgis、postgresql-server-dev-x.x、python-psycopg2(x.x 与你要安装的 PostgreSQL 版本匹配)。或者,你也可以 从源码编译 。如果你使用的是 macOSWindows,请参考特定平台的说明。

安装后

创建一个空间数据库

PostGIS 2 包含了一个 PostgreSQL 的扩展,用来实现空间功能:

$ createdb  <db name>
$ psql <db name>
> CREATE EXTENSION postgis;

数据库用户必须是超级用户,才能运行 CREATE EXTENSION postgis;。该命令是在 migrate 过程中运行的。另一种方法是在项目中使用迁移操作:

from django.contrib.postgres.operations import CreateExtension
from django.db import migrations

class Migration(migrations.Migration):

    operations = [
        CreateExtension('postgis'),
        ...
    ]

如果打算在 PostGIS 3+ 上使用 PostGIS 栅格功能,还应该激活 postgis_raster 扩展。你可以使用 CreateExtension 迁移操作来安装扩展,或者直接运行 CREATE EXTENSION postgis_raster;

GeoDjango 目前没有利用任何 PostGIS 拓扑功能。如果你打算在某些时候使用这些功能,你也可以通过发出 CREATE EXTENSION postgis_topology; 来安装 postgis_topology 扩展。

管理数据库

要管理数据库,可以使用 pgAdmin III 程序(Start ‣ PostgreSQL 9.x ‣ pgAdmin III)或 SQL Shell(Start ‣ PostgreSQL 9.x ‣ SQL Shell)。例如,要创建一个 geodjango 空间数据库和用户,可以在 SQL Shell 中以 postgres 用户的身份执行以下操作:

postgres# CREATE USER geodjango PASSWORD 'my_passwd';
postgres# CREATE DATABASE geodjango OWNER geodjango;