---
title: "Installing PostGIS"
version: 1.9
locale: en
source: https://docs.djangoproject.com/en/1.9/ref/contrib/gis/install/postgis/
canonical: https://djangodocs.dev/en/1.9/ref/contrib/gis/install/postgis/
---
# Installing PostGIS

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

> **Note**
>
> The [psycopg2](http://initd.org/psycopg/) 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).
Please also consult platform-specific instructions if you are on [Mac OS X](/en/1.9/ref/contrib/gis/install/#macosx)
or [Windows](/en/1.9/ref/contrib/gis/testing/#windows).

## Building from source

First download the source archive, and extract:

```
$ wget http://download.osgeo.org/postgis/source/postgis-2.1.5.tar.gz
$ tar xzf postgis-2.1.5.tar.gz
$ cd postgis-2.1.5
```

Next, configure, make and install PostGIS:

```
$ ./configure
```

Finally, make and install:

```
$ make
$ sudo make install
$ cd ..
```

> **Note**
>
> GeoDjango does not automatically create a spatial database.  Please consult
> the section on [Creating a spatial database](#spatialdb-template91) for more information.

## Post-installation

### Creating a spatial database

PostGIS 2 includes an extension for Postgres 9.1+ that can be 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;`.

GeoDjango does not currently leverage any [PostGIS topology functionality](http://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;`.

> **Changed in Django 1.8**
>
> The `CREATE EXTENSION postgis` command is now automatically run during
> the [`migrate`](/en/1.9/ref/django-admin/#django-admin-migrate) process. You can still create it manually if you
> wish.

### Managing the database

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;
```
