Jak utworzyć nową bazę danych „gis” w PostGIS?

24

Chciałbym utworzyć nową bazę danych w PostGIS, aby móc ładować do niej rzeczy podczas korzystania z bieżącej bazy danych. Według dokumentów

Niektóre spakowane dystrybucje PostGIS (w szczególności instalatory Win32 dla PostGIS> = 1.1.5) ładują funkcje PostGIS do bazy danych szablonów o nazwie template_postgis. Jeśli baza danych template_postgis istnieje w instalacji PostgreSQL, użytkownicy i / lub aplikacje mogą tworzyć bazy danych z włączoną przestrzennie za pomocą jednego polecenia.

W moim przypadku wydaje się, że tak nie jest:

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

W przeszłości miałem problemy z kopiowaniem podstawowej gisbazy danych, a następnie usuwaniem zawartości wszystkich tabel. Musi być lepszy sposób. Co robisz, jeśli przypadkowo go upuścisz?

Steve Bennett
źródło

Odpowiedzi:

42

Nie wiem, jakiej wersji PostGISużywasz, ale na> 2.0Najpierw loguję się za pomocą psql:

psql -U postgres

Następnie tworzę bazę danych:

CREATE DATABASE example_gis;

Następnie przechodzę do tej bazy danych:

\connect example_gis;

A potem wykonuję polecenie:

CREATE EXTENSION postgis;

Tworzy to wszystkie funkcje przestrzenne i typy obiektów w tej bazie danych.  

djq
źródło
w moim systemie muszę pisać wielkimi literami, CREATE EXTENSION POSTGISa nie CREATE EXTENSION postgis.
SIslam,
5

Po linku @ novicegis zadziałało to dla mnie z 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

(Powiązane instrukcje nie zawierały rozszerzenia „hstore”).

Steve Bennett
źródło
2

Powinieneś utworzyć „template_postgis” w konsoli. Wszystkie błędy są wyświetlane w konsoli.

Możesz użyć tej instrukcji: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/, jeśli chcesz utworzyć „template_postgis”.

Na przykład:

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

Otrzymałem ten komunikat, gdy zainstalowałem Postgis z błędami

novicegis
źródło
Wszystko działało z postgis 1.5, ale nie ma pliku „rtpostgis.sql”. Czy to ważne?
Steve Bennett,
Myślę, że postgis 1.5 jest najlepszym sposobem. link - oficjalna dokumentacja
novicegis