Как создать новую базу данных «ГИС» в PostGIS?

24

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

Некоторые упакованные дистрибутивы PostGIS (в частности, установщики Win32 для PostGIS> = 1.1.5) загружают функции PostGIS в базу данных шаблонов с именем template_postgis. Если база данных template_postgis существует в вашей установке PostgreSQL, то пользователи и / или приложения могут создавать пространственно-разрешенные базы данных с помощью одной команды.

В моем случае это не так:

$ createdb -T template_postgis my_spatial_db
createdb: database creation failed: ERROR:  template database "template_postgis" does not exist

В прошлом я возился с копированием первичной gisбазы данных, а затем с удалением содержимого всех таблиц. Должен быть лучший способ. Что вы делаете, если случайно уронили его?

Стив Беннетт
источник

Ответы:

42

Я не знаю, какую версию PostGISвы используете, но при> 2.0первом входе в систему я использую psql:

psql -U postgres

Затем я создаю базу данных:

CREATE DATABASE example_gis;

Затем я перехожу в эту базу данных:

\connect example_gis;

И тогда я бегу порекомендовать:

CREATE EXTENSION postgis;

Это создает все пространственные функции и типы объектов в этой базе данных.  

djq
источник
в моей системе мне нужно писать все в верхнем регистре, CREATE EXTENSION POSTGISа не CREATE EXTENSION postgis.
SIslam
5

По ссылке @ novicegis у меня с Postgis 1.5 это сработало:

db=gis
sudo -su postgres <<EOF
createdb --encoding=UTF8 --owner=ubuntu $db
psql -d $db -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
psql -d $db -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
psql -d $db -f /usr/share/postgresql/9.1/contrib/postgis_comments.sql
psql -d $db -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"
psql -d $db -c "GRANT ALL ON geometry_columns TO ubuntu;"
psql -d $db -c 'create extension hstore;'
EOF

(Связанные инструкции не включают расширение «hstore».)

Стив Беннетт
источник
2

Вы должны создать "template_postgis" в консоли. Все ошибки отображаются в консоли.

Вы можете использовать эту инструкцию: http://linfiniti.com/2012/05/install-postgis-2-0-on-ubuntu/ если вы хотите создать "template_postgis".

Например, я делаю:

//install postgis
su oleg
sudo apt-add-repository ppa:sharpie/for-science  
sudo apt-add-repository ppa:sharpie/postgis-nightly
sudo apt-get update
sudo apt-get install postgresql-9.1-postgis

// create template
sudo su
su postgres
createdb -E UTF8 template_postgis2
createlang -d template_postgis2 plpgsql
psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis2'"

psql -d template_postgis2 -f /usr/share/postgresql/9.1/contrib/postgis-2.1/postgis.sql
psql -d template_postgis2 -f /usr/share/postgresql/9.1/contrib/postgis-2.1/rtpostgis.sql
psql -d template_postgis2 -c "GRANT ALL ON geometry_columns TO PUBLIC;"
psql -d template_postgis2 -c "GRANT ALL ON geography_columns TO PUBLIC;"
psql -d template_postgis2 -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
createdb osm -T template_postgis2

Я получил это сообщение при установке postgis с ошибками

novicegis
источник
Это все работало с postgis 1.5, за исключением того, что нет файла "rtpostgis.sql". Это важно?
Стив Беннетт
Я думаю, Postgis 1.5 - лучший способ. ссылка - официальная документация
novicegis