PostGIS adds geographic object support to PostgreSQL, turning it into a spatial database. GEOS, PROJ and GDAL should be installed prior to building PostGIS. You might also need additional libraries, see PostGIS requirements.
On Debian/Ubuntu, you are advised to install the following packages:
python3-psycopg3 (x matching the PostgreSQL version you want to
install). Alternately, you can build from source. Consult the
platform-specific instructions if you are on macOS or Windows.
psycopg 3.1.8+ was added.
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
process. An alternative is to use a migration operation in your project:
from django.contrib.postgres.operations import CreateExtension
from django.db import migrations
operations = [CreateExtension("postgis"), ...]
If you plan to use PostGIS raster functionality on PostGIS 3+, you should also
postgis_raster extension. You can install the extension using
operation, or directly by running
CREATE EXTENSION postgis_raster;.
GeoDjango does not currently leverage any PostGIS topology functionality.
If you plan to use those features at some point, you can also install the
postgis_topology extension by issuing
Managing the database¶
To administer the database, you can either use the pgAdmin III program
geodjango spatial database and user, the following may be executed from
the SQL Shell as the
postgres# CREATE USER geodjango PASSWORD 'my_passwd';
postgres# CREATE DATABASE geodjango OWNER geodjango;