Wie erstelle ich eine neue 'gis'-Datenbank in PostGIS?

24

Ich möchte eine neue Datenbank in PostGIS erstellen, damit ich sie laden kann, während die aktuelle Datenbank verwendet wird. Nach den Unterlagen

Einige Paketdistributionen von PostGIS (insbesondere die Win32-Installationsprogramme für PostGIS> = 1.1.5) laden die PostGIS-Funktionen in eine Vorlagendatenbank namens template_postgis. Wenn die template_postgis-Datenbank in Ihrer PostgreSQL-Installation vorhanden ist, können Benutzer und / oder Anwendungen mit einem einzigen Befehl räumlich aktivierte Datenbanken erstellen.

In meinem Fall scheint das nicht so zu sein:

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

In der Vergangenheit habe ich beim Kopieren der Primärdatenbank gisherumgespielt und dann den Inhalt aller Tabellen gelöscht. Es muss einen besseren Weg geben. Was machen Sie, wenn Sie es versehentlich fallen lassen?

Steve Bennett
quelle

Antworten:

42

Ich weiß nicht, welche Version von PostGISIhnen verwendet wird, aber auf> 2.0Ich melde mich zuerst an mit psql:

psql -U postgres

Dann erstelle ich eine Datenbank:

CREATE DATABASE example_gis;

Dann gehe ich in diese Datenbank:

\connect example_gis;

Und dann führe ich das Kommando aus:

CREATE EXTENSION postgis;

Dadurch werden alle räumlichen Funktionen und Objekttypen in dieser Datenbank erstellt.  

djq
quelle
Auf meinem System muss ich CREATE EXTENSION POSTGISeher Großbuchstaben schreiben als CREATE EXTENSION postgis.
Islam
5

Nach dem Link von @ novicegis hat dies bei mir mit postgis 1.5 funktioniert:

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

(Die verknüpften Anweisungen enthielten nicht die Erweiterung 'hstore'.)

Steve Bennett
quelle
2

Sie sollten "template_postgis" in der Konsole erstellen. Alle Fehler werden in der Konsole angezeigt.

Sie können diese Anleitung verwenden: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/, wenn Sie "template_postgis" erstellen möchten.

Zum Beispiel mache ich:

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

Ich habe diese Meldung erhalten, als ich postgis mit Fehlern installiert habe

novicegis
quelle
Das alles hat mit postgis 1.5 funktioniert, außer dass es keine "rtpostgis.sql" -Datei gibt. Ist es wichtig?
Steve Bennett
Ich denke, Postgis 1.5 ist der beste Weg. link - offizielle dokumentation
novicegis