Mengapa instalasi PostGIS tidak membuat template_postgis?

36

Saya menggunakan rute ini untuk instalasi PostgreSQL dan PostGIS:

Sekarang ketika saya meluncurkan pgAdmin dan mencoba membuat database PostGIS baru, tidak ada template_postgis untuk digunakan dalam Templat.


Saya sudah mencoba rute lain, yaitu mengunduh paket PostgreSQL langsung dari PostgreSQL. Ini menginstal server dan memungkinkan Anda untuk menggunakan StackBuilder untuk mengunduh dan menginstal PostGIS. Ini tidak memperbaiki masalah saya.

Michael Markieta
sumber

Jawaban:

32

Anda dapat dengan mudah membuat template jika tidak ada secara otomatis. Berikut ini adalah deskripsi untuk ubuntu: http://obsessivecoder.com/2010/02/01/installing-postgresql-8-4-postgis-1-4-1-and-pgrouting-1-0-3-on-ubuntu -9-10-karmic-koala /

Ini adalah bagian penting:

sudo su postgres
createdb template_postgis
createlang plpgsql template_postgis
psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql

Dalam Pangolin Tepat:

sudo su postgres
createdb template_postgis
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
underdark
sumber
Aneh .. pada langkah 'createlang plpgsql postgistemplate' Saya mendapatkan $ "plpgsql" sudah terpasang di database "postgistemplate" ... dan kemudian pada langkah berikutnya, psql: perintah tidak ditemukan
Michael Markieta
Perbarui - Tidak ada direktori postgis di / usr / share / path
Michael Markieta
Maka saya kira itu tersembunyi di tempat lain di OSX. Sudahkah Anda mencoba mencari file?
underdark
Ditemukan file, semua baris kode dijalankan tanpa kesalahan. Tapi pgAdmin3 masih belum menunjukkan templatnya ... Hrmm .. Nyalakan ulang Mac saya untuk melihat apakah itu akan mengubah apa pun, tetapi tetap nada. (Aneh ... Saya sudah mengerjakan ini di Mac saya sebelum beralih ke Lion)
Michael Markieta
Pengguna mana yang Anda gunakan untuk membuat templat dan pengguna mana yang Anda gunakan di pgAdmin?
underdark
29

Dari versi 2 Postgis diaktifkan dengan menggunakan sistem ekstensi. Untuk mengaktifkan basis data secara spasial, masuk ke basis data Anda dan kemudian:

 CREATE EXTENSION postgis;
 CREATE EXTENSION postgis_topology;

sumber: http://postgis.net/docs/postgis_installation.html

Catatan: Hanya SUPERUSERSperan yang memiliki kemampuan untuk dibuatEXTENSIONS

Nickes
sumber
dari pgAdmin4: Database >> {select db} >> Extensions >> -r-klik >> Buat >> Pilih dari daftar
matt wilkie
6

Saya memiliki masalah serupa dan akhirnya menginstal paket yang ditemukan di:

entreprisedb.com

Anda dapat memilih menginstal postgis selama fase instalasi atau memanggil 'Application Stack Builder' nanti. Jika instalasi tidak berhasil, pilih folder lain untuk mengunduh installer postgis (yang akan disebut sesuatu seperti edb_postgis_1_5_pg91.app.zip). Buka kemasannya dan instal. Jika tidak berhasil, Anda mungkin ingin mem-boot ulang dan mencoba lagi. Dalam pgAdmin III template_postgis akan muncul.

Vladtn
sumber
3

Pertanyaannya mungkin sudah usang tetapi saya mengalami kesalahan yang sama pada OS X Lion. Mungkin jawaban saya dapat membantu pengguna lain.

Instalasi default PostGIS dengan "stack builder" akan gagal. Tetapi setelah langkah instalasi pertama, Anda dapat memilih folder unduhan untuk PostGIS. Cukup unduh ke desktop Anda dan unzip dengan tangan. Dengan menggandakan file, itu akan menginstal dengan benar. Postgis_template sekarang tersedia di pgAdmin.

troll
sumber
1

Menurut dokumentasi PostGIS, hanya

Beberapa distribusi PostGIS yang dikemas ... memuat fungsi PostGIS ke dalam basis data templat yang disebut templat_postgis.

Jadi, tidak semua distribusi hadir template_postgis.

Seperti yang dikatakan dalam jawaban yang ada, di PostGIS 2.x, mudah untuk membuat atau menyesuaikan sendiri template dengan membuat database reguler bernama template_postgis superuser, dan kemudian membuat ekstensi yang diperlukan dan opsional (seperti pgRouting). Per dokumentasi PostGIS:

sudo su postgres
createdb template_postgis

psql -d template_postgis -c "CREATE EXTENSION postgis;"
psql -d template_postgis -c "CREATE EXTENSION postgis_topology;"

-- if you built with sfcgal support --
psql -d template_postgis -c "CREATE EXTENSION postgis_sfcgal;"

Selain itu, Anda dapat menandai database ini baru dibuat sebagai template database dengan menetapkan datistemplatebendera dalam sistem tabel pg_databaseuntuk ture.

psql -d template_postgis -c "UPDATE pg_database SET datistemplate = 'true' WHERE datname = 'template_postgis';"

Ini akan, misalnya, mencegah database templat dari terjatuh atau diubah secara tidak sengaja oleh pengguna lain atau diri Anda sendiri. (Anda harus mengatur flag ke false jika Anda ingin membuat perubahan pada template.)

Kemudian Anda dapat membuat basis data spasial berdasarkan apa pun yang Anda masukkan ke dalam templat:

createdb -T template_postgis my_spatial_db
sampai
sumber