¿Cómo crear una nueva base de datos 'gis' en PostGIS?

24

Me gustaría crear una nueva base de datos en PostGIS, para poder cargar cosas en ella mientras se usa la base de datos actual. De acuerdo con los documentos

Algunas distribuciones empaquetadas de PostGIS (en particular los instaladores Win32 para PostGIS> = 1.1.5) cargan las funciones de PostGIS en una base de datos de plantilla llamada template_postgis. Si la base de datos template_postgis existe en su instalación de PostgreSQL, entonces es posible que los usuarios y / o aplicaciones creen bases de datos habilitadas espacialmente usando un solo comando.

En mi caso, esto no parece ser así:

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

En el pasado, me he tomado la molestia de copiar la gisbase de datos primaria y luego eliminar el contenido de todas las tablas. Tiene que haber una mejor manera. ¿Qué haces si lo dejas caer accidentalmente?

Steve Bennett
fuente

Respuestas:

42

No sé qué versión de PostGISusted está usando, pero en> 2.0Primero inicio sesión usando psql:

psql -U postgres

Luego creo una base de datos:

CREATE DATABASE example_gis;

Luego me muevo a esta base de datos:

\connect example_gis;

Y luego ejecuto el comando:

CREATE EXTENSION postgis;

Esto crea todas las funciones espaciales y tipos de objetos en esta base de datos.  

djq
fuente
en mi sistema, necesito escribir todas las mayúsculas en CREATE EXTENSION POSTGISlugar de CREATE EXTENSION postgis.
SIslam
5

Siguiendo el enlace de @novicegis, esto funcionó para mí 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

(Las instrucciones vinculadas no incluían la extensión 'hstore').

Steve Bennett
fuente
2

Debe crear "template_postgis" en la consola. Todos los errores se muestran en la consola.

Puedes usar estas instrucciones: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/ si desea crear "template_postgis".

Por ejemplo, yo hago:

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

Recibí este mensaje cuando instalé postgis con errores

novicegis
fuente
Todo eso funcionó con postgis 1.5, excepto que no hay un archivo "rtpostgis.sql". ¿Es importante?
Steve Bennett
Creo que postgis 1.5 es la mejor manera. enlace - documentación oficial
novicios