Як створити нову базу даних «gis» в 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;

Це створює всі просторові функції та типи об'єктів у цій базі даних.  


у моїй системі мені потрібно написати весь верхній регістр, 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/installing-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 1.5, за винятком того, що немає файлу "rtpostgis.sql". Це важливо?
Стів Беннетт

Я думаю, що postgis 1.5 - найкращий спосіб. посилання - офіційна документація
novicegis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.