---
title: "安装PostGIS"
version: 3.0
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/3.0/ref/contrib/gis/install/postgis/
canonical: https://djangodocs.dev/zh-hans/3.0/ref/contrib/gis/install/postgis/
---
# 安装PostGIS

[PostGIS](https://postgis.net/) adds geographic object support to PostgreSQL, turning it
into a spatial database. [GEOS](/zh-hans/3.0/ref/contrib/gis/install/geolibs/#geosbuild), [PROJ.4](/zh-hans/3.0/ref/contrib/gis/install/geolibs/#proj4) and
[GDAL](/zh-hans/3.0/ref/contrib/gis/install/geolibs/#gdalbuild) should be installed prior to building PostGIS. You
might also need additional libraries, see [PostGIS requirements](https://postgis.net/docs/postgis_installation.html#install_requirements).

The [psycopg2](https://www.psycopg.org/) module is required for use as the database adapter when using
GeoDjango with PostGIS.

On Debian/Ubuntu, you are advised to install the following packages:
postgresql-x.x, postgresql-x.x-postgis, postgresql-server-dev-x.x,
python-psycopg2 (x.x matching the PostgreSQL version you want to install).
Alternately, you can [build from source](https://postgis.net/docs/postgis_installation.html#install_short_version). Consult the platform-specific
instructions if you are on [macOS](/zh-hans/3.0/ref/contrib/gis/install/#macos) or [Windows](/zh-hans/3.0/ref/contrib/gis/testing/#windows).

## Post-installation

### Creating a spatial database

PostGIS 2 includes an extension for PostgreSQL that's used to enable spatial
functionality:

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

The database user must be a superuser in order to run
`CREATE EXTENSION postgis;`. The command is run during the [`migrate`](/zh-hans/3.0/ref/django-admin/#django-admin-migrate)
process. An alternative is to use a migration operation in your project:

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

class Migration(migrations.Migration):

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

GeoDjango does not currently leverage any [PostGIS topology functionality](https://postgis.net/docs/Topology.html).
If you plan to use those features at some point, you can also install the
`postgis_topology` extension by issuing `CREATE EXTENSION
postgis_topology;`.

### 管理数据库

To administer the database, you can either use the pgAdmin III program
(Start ‣ PostgreSQL 9.x ‣ pgAdmin III) or the
SQL Shell (Start ‣ PostgreSQL 9.x ‣ SQL Shell).
For example, to create a `geodjango` spatial database and user, the following
may be executed from the SQL Shell as the `postgres` user:

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