Bagaimana cara membuat database 'gis' baru di PostGIS?

24

Saya ingin membuat database baru di PostGIS, jadi saya bisa memuatkan barang ke dalamnya saat database saat ini sedang digunakan. Menurut dokumen

Beberapa distribusi PostGIS yang dikemas (khususnya penginstal Win32 untuk PostGIS> = 1.1.5) memuat fungsi PostGIS ke dalam basis data templat yang disebut templat_postgis. Jika database template_postgis ada di instalasi PostgreSQL Anda, maka mungkin bagi pengguna dan / atau aplikasi untuk membuat basis data yang diaktifkan secara spasial menggunakan satu perintah.

Dalam kasus saya ini sepertinya tidak begitu:

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

Di masa lalu saya telah main-main dengan menyalin gisdatabase utama , lalu menghapus isi semua tabel. Pasti ada cara yang lebih baik. Apa yang Anda lakukan jika Anda tidak sengaja menjatuhkannya?

Steve Bennett
sumber

Jawaban:

42

Saya tidak tahu versi apa yang PostGISAnda gunakan tetapi pada> 2.0saya pertama kali login menggunakan psql:

psql -U postgres

Lalu saya membuat database:

CREATE DATABASE example_gis;

Lalu saya pindah ke database ini:

\connect example_gis;

Dan kemudian saya menjalankan perintah:

CREATE EXTENSION postgis;

Ini menciptakan semua fungsi spasial, dan tipe objek dalam database ini.  

djq
sumber
di sistem saya, saya perlu menulis semua huruf besar CREATE EXTENSION POSTGISdaripada CREATE EXTENSION postgis.
SIslam
5

Mengikuti tautan @ novicegis, ini bekerja untuk saya dengan 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

(Instruksi tertaut tidak termasuk ekstensi 'hstore'.)

Steve Bennett
sumber
2

Anda harus membuat "template_postgis" di konsol. Semua kesalahan ditampilkan di konsol.

Anda dapat menggunakan instruksi ini: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/ jika Anda ingin membuat "template_postgis".

Sebagai contoh, saya lakukan:

//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

Saya mendapat pesan ini ketika saya menginstal postgis dengan kesalahan

pemula
sumber
Itu semua bekerja dengan postgis 1.5 kecuali tidak ada file "rtpostgis.sql". Apakah itu penting?
Steve Bennett
Saya pikir, postgis 1.5 adalah cara terbaik. tautan - dokumentasi resmi
novicegis