|
@@ -43,8 +43,7 @@ Finally, make and install::
|
|
|
.. note::
|
|
|
|
|
|
GeoDjango does not automatically create a spatial database. Please consult
|
|
|
- the section on :ref:`spatialdb_template91` or
|
|
|
- :ref:`spatialdb_template_earlier` for more information.
|
|
|
+ the section on :ref:`spatialdb_template91` for more information.
|
|
|
|
|
|
__ http://postgis.net/
|
|
|
|
|
@@ -54,8 +53,8 @@ Post-installation
|
|
|
.. _spatialdb_template:
|
|
|
.. _spatialdb_template91:
|
|
|
|
|
|
-Creating a spatial database with PostGIS 2.0 and PostgreSQL 9.1+
|
|
|
-----------------------------------------------------------------
|
|
|
+Creating a spatial database
|
|
|
+---------------------------
|
|
|
|
|
|
PostGIS 2 includes an extension for Postgres 9.1+ that can be used to enable
|
|
|
spatial functionality::
|
|
@@ -77,94 +76,6 @@ __ http://postgis.net/docs/Topology.html
|
|
|
the :djadmin:`migrate` process. You can still create it manually if you
|
|
|
wish.
|
|
|
|
|
|
-.. _spatialdb_template_earlier:
|
|
|
-
|
|
|
-Creating a spatial database template for earlier versions
|
|
|
----------------------------------------------------------
|
|
|
-
|
|
|
-If you have an earlier version of PostGIS or PostgreSQL, the CREATE
|
|
|
-EXTENSION isn't available and you need to create the spatial database
|
|
|
-using the following instructions.
|
|
|
-
|
|
|
-Creating a spatial database with PostGIS is different than normal because
|
|
|
-additional SQL must be loaded to enable spatial functionality. Because of
|
|
|
-the steps in this process, it's better to create a database template that
|
|
|
-can be reused later.
|
|
|
-
|
|
|
-First, you need to be able to execute the commands as a privileged database
|
|
|
-user. For example, you can use the following to become the ``postgres`` user::
|
|
|
-
|
|
|
- $ sudo su - postgres
|
|
|
-
|
|
|
-.. note::
|
|
|
-
|
|
|
- The location *and* name of the PostGIS SQL files (e.g., from
|
|
|
- ``POSTGIS_SQL_PATH`` below) depends on the version of PostGIS.
|
|
|
- Version 1.5 uses ``<sharedir>/contrib/postgis-1.5/postgis.sql``.
|
|
|
-
|
|
|
- To complicate matters, Debian/Ubuntu distributions have their own separate
|
|
|
- directory naming system that might change with time. In this case, use the
|
|
|
- :download:`create_template_postgis-debian.sh` script.
|
|
|
-
|
|
|
- The example below assumes PostGIS 1.5, thus you may need to modify
|
|
|
- ``POSTGIS_SQL_PATH`` and the name of the SQL file for the specific
|
|
|
- version of PostGIS you are using.
|
|
|
-
|
|
|
-Once you're a database super user, then you may execute the following commands
|
|
|
-to create a PostGIS spatial database template::
|
|
|
-
|
|
|
- $ POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-2.0
|
|
|
- # Creating the template spatial database.
|
|
|
- $ createdb -E UTF8 template_postgis
|
|
|
- $ createlang -d template_postgis plpgsql # Adding PLPGSQL language support.
|
|
|
- # Allows non-superusers the ability to create from this template
|
|
|
- $ psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';"
|
|
|
- # Loading the PostGIS SQL routines
|
|
|
- $ psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql
|
|
|
- $ psql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql
|
|
|
- # Enabling users to alter spatial tables.
|
|
|
- $ psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;"
|
|
|
- $ psql -d template_postgis -c "GRANT ALL ON geography_columns TO PUBLIC;"
|
|
|
- $ psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
|
|
|
-
|
|
|
-These commands may be placed in a shell script for later use; for convenience
|
|
|
-the following scripts are available:
|
|
|
-
|
|
|
-=============== =============================================
|
|
|
-PostGIS version Bash shell script
|
|
|
-=============== =============================================
|
|
|
-1.5 :download:`create_template_postgis-1.5.sh`
|
|
|
-Debian/Ubuntu :download:`create_template_postgis-debian.sh`
|
|
|
-=============== =============================================
|
|
|
-
|
|
|
-Afterwards, you may create a spatial database by simply specifying
|
|
|
-``template_postgis`` as the template to use (via the ``-T`` option)::
|
|
|
-
|
|
|
- $ createdb -T template_postgis <db name>
|
|
|
-
|
|
|
-.. note::
|
|
|
-
|
|
|
- While the ``createdb`` command does not require database super-user privileges,
|
|
|
- it must be executed by a database user that has permissions to create databases.
|
|
|
- You can create such a user with the following command::
|
|
|
-
|
|
|
- $ createuser --createdb <user>
|
|
|
-
|
|
|
-PostgreSQL's createdb fails
|
|
|
----------------------------
|
|
|
-
|
|
|
-When the PostgreSQL cluster uses a non-UTF8 encoding, the
|
|
|
-:file:`create_template_postgis-*.sh` script will fail when executing
|
|
|
-``createdb``::
|
|
|
-
|
|
|
- createdb: database creation failed: ERROR: new encoding (UTF8) is incompatible
|
|
|
- with the encoding of the template database (SQL_ASCII)
|
|
|
-
|
|
|
-The `current workaround`__ is to re-create the cluster using UTF8 (back up any
|
|
|
-databases before dropping the cluster).
|
|
|
-
|
|
|
-__ http://jacobian.org/writing/pg-encoding-ubuntu/
|
|
|
-
|
|
|
Managing the database
|
|
|
---------------------
|
|
|
|
|
@@ -175,4 +86,4 @@ 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 TEMPLATE template_postgis ENCODING 'utf8';
|
|
|
+ postgres# CREATE DATABASE geodjango OWNER geodjango;
|