¿Cómo crear una plantilla PostGIS?

19

Estoy siguiendo un tutorial para instalar pgrouting. Sin embargo, no obtuve la parte cuando dice

  

Inicie pgAdmin y cree una nueva base de datos basada en su plantilla de PostGIS

¿Dónde puedo obtener esta plantilla postgis? Sé que he instalado PostGIS utilizando homebrew. Pero no pude encontrar la plantilla. Ahora estoy ejecutando macos.

    
pregunta rajan sthapit 30.05.2012 - 21:29

5 respuestas

16

Nuevo método con PostgreSQL 9.1

Gracias al consejo de R.K. A continuación, eché un vistazo a este tutorial y encontré que para PostgreSQL 9.1 todo lo que debe hacer es agregar las extensiones postgis y postgis_topology a una base de datos existente mediante los menús contextuales pgAdmin. Para crear una plantilla postgis, creé una nueva base de datos llamada template-postgis y luego agregué estas extensiones. Entonces creé mi otra base de datos usando esta plantilla. Cuando usé pg_dump , encontré que el tamaño de la exportación era mucho más pequeño, ya que parece que solo incluye estas líneas y no descarga las funciones de extensión:

CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS postgis_topology WITH SCHEMA topology;

Método redundante antiguo:

Terminé usando los archivos .sql aquí:

/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql

También obtuve este error cuando importé una base de datos PostGIS existente a una nueva base de datos creada a partir de esta plantilla:

ERROR:  type "spheroid" already exists

Así que seguí las instrucciones aquí y utilicé ON_ERROR_ROLLBACK=on para configurar plantilla, después de crear una base de datos en blanco llamada "template_postgis":

psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql -v ON_ERROR_ROLLBACK=on

Y luego importó mi base de datos de copia de seguridad, por ejemplo:

psql -U someuser -d somedb -1 -f somefile.sql -v ON_ERROR_ROLLBACK=on

Método aún más antiguo:

Hice esto:

createdb -E UTF8 -T template0 template_postgis
createlang -d template_postgis plpgsql
psql --quiet -d template_postgis -f /Applications/Postgres.app/Contents/MacOS/share/extension/postgis--2.0.1.sql

La ruta a postgis--2.0.1.sql será diferente dependiendo de su configuración.

    
respondido por el Aram Kocharyan 03.11.2012 - 14:34
14

Si está ejecutando PostgreSQL 9.1+, no necesita molestarse con la base de datos de plantillas . Simplemente cree una base de datos y luego en la vista SQL en pgAdmin, escriba y ejecute

CREATE EXTENSION postgis;

Eso habilitará espacialmente su base de datos.

    
respondido por el R.K. 06.12.2012 - 11:07
3

De hecho, esta es la base de la instalación de Postgis.

si tiene una plantilla postgis, puede crear una nueva base de datos a partir de ella:

 createdb -T postgistemplate -O gis gisdb

Si no lo tiene, puede hacerlo de esta manera:

sudo su postgres
createdb postgistemplate
createlang plpgsql postgistemplate
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/lwpostgis.sql
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/spatial_ref_sys.sql

puede usar los scripts de bash Debian / Ubuntu - create_template_postgis-debian.sh, aquí

espero que te ayude ...

    
respondido por el Aragon 31.05.2012 - 08:51
2

Por lo que recuerdo, hay algunas secuencias de comandos disponibles para que el taller cree esas plantillas de bases de datos. También está disponible aquí: enlace

Eventualmente, necesitas cambiar algunas cosas aquí y allá, porque fue escrito para que funcione para Debian / Ubuntu. Pero puedes elegir lo que necesites.

    
respondido por el dkastl 30.05.2012 - 22:12
2
#!/bin/sh
instance_name=$1
psql << EOF
create database $instance_name;
\connect $instance_name
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
EOF

Utilizo este script bash para ejecutar la creación de una nueva base de datos con Postgis habilitado y el nombre dado en la entrada estándar.

Postgres 9.3

PostGIS 2.1.3

    
respondido por el andilabs 18.01.2015 - 03:35

Lea otras preguntas en las etiquetas

___ función qstnhdr ___ setStyle () para funciones de GeoJSON - Folleto ______ qstntxt ___

Bien, ya que hice una pregunta muy larga sobre esto, pero como no obtuve ninguna respuesta nueva por un tiempo, y para no confundirme en los detalles, mantendré esta simple de la mejor manera posible.

Si no me equivoco, una función %code% para una característica particular con nombre sería la siguiente:

%pre%

... que cambiaría el color de naranja a azul. También soy consciente de la función %code% que revertirá el estilo al original.

Así es como estilo mi GeoJSON:

%pre%

Lo que quiero hacer es hacer que solo un país sea azul y los demás grises, más adelante en el código. Es una cosa de dos pasos, pintar todos los países a gris y luego hacer uno azul.

Lo primero es que necesito un bucle que se repita en cada función y %code% para que todos los países aparezcan en gris. ¿Funciona si acabo de %code% o algo así?

La segunda cosa es, (eso me da noches sin dormir) ¿Cómo selecciono solo una característica de un grupo de polígonos de GeoJSON para trabajar? Solo el país que necesito para pintar al azul.

Si se tratara de mover el mouse, podría colocar un detector de eventos como se hace en los tutoriales de folletos. Pero independientemente de la interacción del usuario, quiero establecer y restablecer el estilo llamándolo con su nombre, como hice con el rectángulo de arriba.

    
______ answer75686 ___

He escrito un pequeño código para diseñar una función geojson específica utilizando un folleto. Puede probarlo en JSFiddle (original, no funcional) , Functional JSFiddle 2018-02-17 , o use el siguiente código de prueba localmente.

Para este ejemplo, estoy usando archivos us-states.json pero se puede usar para cualquier archivo geojson.

Espero que te ayude.

Aquí está el código:

%pre%     
______ answer133325 ___

Esto funciona sin la necesidad de eliminar la capa y volver a crear una nueva como se describe anteriormente:

%pre%

Parece ser bastante más eficiente que eliminar y recrear la capa geoJson. De los documentos, una capa %code% extiende %code% que a su vez extiende %code% . < br> Además, parece que cada característica de geoJson tiene su propia capa en el %code% !

    
___ ¿Qué le molesta acerca de su entorno GIS?