Come creare un nuovo database 'gis' in PostGIS?


24

Vorrei creare un nuovo database in PostGIS, in modo da poter caricare materiale al suo interno mentre viene utilizzato il database corrente. Secondo i documenti

Alcune distribuzioni impacchettate di PostGIS (in particolare i programmi di installazione Win32 per PostGIS> = 1.1.5) caricano le funzioni PostGIS in un database modello chiamato template_postgis. Se il database template_postgis esiste nell'installazione di PostgreSQL, è possibile per gli utenti e / o le applicazioni creare database abilitati spazialmente usando un singolo comando.

Nel mio caso questo sembra non essere così:

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

In passato ho sbagliato a copiare il gisdatabase primario , quindi a eliminare il contenuto di tutte le tabelle. Deve esserci un modo migliore. Cosa fai se lo lasci cadere accidentalmente?


Risposte:


42

Non so quale versione di PostGISte stai usando ma su> 2.0Per prima cosa eseguo l'accesso usando psql:

psql -U postgres

Quindi creo un database:

CREATE DATABASE example_gis;

Quindi mi sposto in questo database:

\connect example_gis;

E poi eseguo il encomio:

CREATE EXTENSION postgis;

Ciò crea tutte le funzioni spaziali e i tipi di oggetto in questo database.  


nel mio sistema, devo scrivere tutto in maiuscolo CREATE EXTENSION POSTGISpiuttosto che CREATE EXTENSION postgis.
SIslam,

5

Seguendo il link di @ novicegis, ha funzionato per me con 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

(Le istruzioni collegate non includevano l'estensione 'hstore'.)


2

È necessario creare "template_postgis" nella console. Tutti gli errori vengono visualizzati nella console.

È possibile utilizzare queste istruzioni: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/ se si desidera creare "template_postgis".

Ad esempio, faccio:

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

Ho ricevuto questo messaggio quando ho installato Postgis con errori


Che tutto ha funzionato con Postgis 1.5 tranne che non esiste un file "rtpostgis.sql". È importante?
Steve Bennett,

Penso che Postgis 1.5 sia il modo migliore. link - documentazione ufficiale
novicegis
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.