Spec-Zone.ru › Django 1.8

Установка PostGIS

PostGIS добавляет поддержку географических объектов в PostgreSQL, превращая его в пространственную базу данных. GEOS, PROJ.4 и GDAL должны быть установлены перед построением PostGIS. Возможно, также потребуются дополнительные библиотеки, см. требования к PostGIS.

Примечание

Модуль psycopg2 необходим для использования в качестве адаптера базы данных при использовании GeoDjango с PostGIS.

В Debian/Ubuntu рекомендуется установить следующие пакеты: postgresql-x.x, postgresql-x.x-postgis, postgresql-server-dev-x.x, python-psycopg2 (x.x соответствует версии PostgreSQL, которую вы хотите установить). Также обратитесь к инструкциям для конкретной платформы, если вы используете Mac OS X или Windows.

Компиляция из исходного кода

Сначала загрузите архив исходного кода и распакуйте его:

$ 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

Затем сконфигурируйте, создайте и установите PostGIS:

$ ./configure

Наконец, создайте и установите:

$ make
$ sudo make install
$ cd ..

Примечание

GeoDjango не автоматически создаёт пространственную базу данных. Обратитесь к разделу Создание пространственной базы данных с PostGIS 2.0 и PostgreSQL 9.1+ или Создание шаблона пространственной базы данных для более ранних версий для получения дополнительной информации.

После установки

Создание пространственной базы данных с PostGIS 2.0 и PostgreSQL 9.1+

PostGIS 2 включает расширение для Postgres 9.1+, которое можно использовать для включения пространственной функциональности:

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

GeoDjango в настоящее время не использует функциональность топологии PostGIS. функциональность топологии PostGIS. Если вы планируете использовать эти функции в будущем, вы также можете установить расширение postgis_topology , выполнив команду CREATE EXTENSION postgis_topology;.

Команда CREATE EXTENSION postgis теперь автоматически выполняется во время процесса migrate. Вы по-прежнему можете создать её вручную, если хотите.

Создание шаблона пространственной базы данных для более ранних версий

Если у вас более ранняя версия PostGIS или PostgreSQL, CREATE EXTENSION недоступен, и вам нужно создать пространственную базу данных, следуя этим инструкциям.

Создание пространственной базы данных с PostGIS отличается от обычного, потому что необходимо загрузить дополнительный SQL для включения пространственной функциональности. Из-за шагов в этом процессе лучше создать шаблон базы данных, который можно будет использовать повторно позже.

Сначала вам нужно получить возможность выполнять команды от имени привилегированного пользователя базы данных. Например, вы можете использовать следующую команду, чтобы стать пользователем postgres:

$ sudo su - postgres

Примечание

Расположение и имя файлов SQL PostGIS (например, из POSTGIS_SQL_PATH ниже) зависит от версии PostGIS. Версия 1.5 использует <sharedir>/contrib/postgis-1.5/postgis.sql.

Для усложнения ситуации, дистрибутивы Debian/Ubuntu имеют свою собственную систему именования каталогов, которая может со временем меняться. В этом случае используйте скрипт create_template_postgis-debian.sh.

В примере ниже предполагается PostGIS 1.5, поэтому вам может потребоваться изменить POSTGIS_SQL_PATH и имя файла SQL для конкретной используемой версии PostGIS.

После того, как вы стали суперпользователем базы данных, вы можете выполнить следующие команды, чтобы создать шаблон пространственной базы данных PostGIS:

$ 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;"

Эти команды можно поместить в скрипт оболочки для последующего использования; для удобства доступны следующие скрипты:

Версия PostGIS Скрипт оболочки Bash
1.5 create_template_postgis-1.5.sh
Debian/Ubuntu create_template_postgis-debian.sh

После этого вы можете создать пространственную базу данных, просто указав template_postgis в качестве шаблона для использования (через опцию -T):

$ createdb -T template_postgis <db name>

Примечание

Хотя для выполнения команды createdb права суперпользователя базы данных не требуются, её должен выполнить пользователь базы данных, имеющий права на создание баз данных. Вы можете создать такого пользователя следующей командой:

$ createuser --createdb <user>

Ошибка PostgreSQL при создании базы данных

Когда кластер PostgreSQL использует кодировку отличную от UTF8, скрипт create_template_postgis-*.sh завершится ошибкой при выполнении createdb:

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible
  with the encoding of the template database (SQL_ASCII)

Текущим решением является повторное создание кластера с использованием UTF8 (перед удалением кластера сохраните любые базы данных).

Управление базой данных

Для администрирования базы данных можно использовать программу pgAdmin III (Пуск ‣ PostgreSQL 9.x ‣ pgAdmin III) или оболочку SQL (Пуск ‣ PostgreSQL 9.x ‣ Оболочка SQL). Например, для создания пространственной базы данных и пользователя geodjango, можно выполнить следующие команды из оболочки SQL от имени пользователя postgres:

postgres# CREATE USER geodjango PASSWORD 'my_passwd';
postgres# CREATE DATABASE geodjango OWNER geodjango TEMPLATE template_postgis ENCODING 'utf8';

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/contrib/gis/install/postgis/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API