Como criar um novo banco de dados 'gis' no PostGIS?

24

Gostaria de criar um novo banco de dados no PostGIS, para que eu possa carregar coisas enquanto o banco de dados atual estiver sendo usado. De acordo com os documentos

Algumas distribuições empacotadas do PostGIS (em particular os instaladores do Win32 para PostGIS> = 1.1.5) carregam as funções do PostGIS em um banco de dados de modelo chamado template_postgis. Se o banco de dados template_postgis existir na sua instalação do PostgreSQL, é possível que usuários e / ou aplicativos criem bancos de dados espacialmente ativados usando um único comando.

No meu caso, isso parece não ser assim:

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

No passado, eu brincava copiando o gisbanco de dados primário e excluindo o conteúdo de todas as tabelas. Deve haver uma maneira melhor. O que você faz se você largá-lo acidentalmente?

Steve Bennett
fonte

Respostas:

42

Não sei qual versão PostGISvocê está usando, mas em> 2.0Faço o primeiro login usando psql:

psql -U postgres

Então eu crio um banco de dados:

CREATE DATABASE example_gis;

Então eu passo para esse banco de dados:

\connect example_gis;

E então eu executo o elogio:

CREATE EXTENSION postgis;

Isso cria todas as funções espaciais e tipos de objetos nesse banco de dados.  

djq
fonte
no meu sistema, preciso escrever todas as letras maiúsculas em CREATE EXTENSION POSTGISvez de CREATE EXTENSION postgis.
SIslam
5

Seguindo o link de @ novicegis, isso funcionou para mim com o 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

(As instruções vinculadas não incluem a extensão 'hstore'.)

Steve Bennett
fonte
2

Você deve criar "template_postgis" no console. Todos os erros são exibidos no console.

Você pode usar estas instruções: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/ se desejar criar "template_postgis".

Por exemplo, eu faço:

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

Recebi esta mensagem quando instalei o postgis com erros

novicegis
fonte
Tudo isso funcionou com o postgis 1.5, exceto que não há arquivo "rtpostgis.sql". É importante?
Steve Bennett
Penso que o postgis 1.5 é o melhor caminho. link - documentação oficial
novicegis 13/09/13