Agregar archivos de forma a la base de datos PostGIS

30

Pude crear una base de datos Postgresql y luego ejecuté,

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

Entonces, ¿puedo importar directamente los archivos de forma? ¿Sería este el comando correcto,

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

No estoy seguro de cómo estructurar la base de datos, ¿no necesitaría una tabla? Eventualmente tendré que agregar un montón de archivos de forma y, entonces, ¿hay un comando para hacer eso?

Sam007
fuente

Respuestas:

49

Tratar shp2pgsql. La sintaxis básica es como:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h HOST -d BASE DE DATOS -U USUARIO

Siempre encuentro útil esta hoja de trucos de http://www.bostongis.com . Si se desplaza un poco hacia abajo, encontrará ejemplos simples sobre cómo cargar datos.

Espero eso ayude.

Stophface
fuente
Pero no tengo mesa. ¿Qué tabla y esquema debo crear?
Sam007
1
Si echas un vistazo a la hoja de trucos , (-d|-a|-c|-p)son las banderas de las tablas. Si no especificó nada, elegirá -cde forma predeterminada (crea una nueva tabla y la llena). En cuanto a SRID, no lo sé, eso depende de la proyección de sus datos. Si tiene el .projarchivo que vino con los archivos de forma, puede verificar su proyección en prj2epsg.org/search . Espero que ayude ..
gracias por la respuesta @Haziq. ¿Solo estoy confundido en cuanto a dónde -cviene? Lo intenté shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhpero recibo un error dpaste.com/834563
Sam007
Creo que -cdebería ir después -s 4326y antes /var/www/geo/shapefile/PimaPine.shp... La sintaxis es shp2pgsql [OPTIONS] shapefile [schema.]table. ¿Cambiar la posición de los -cefectos fijos por error?
No, sigue siendo el mismo error. También podría estar enfrentando el error ROLLBACK amigo a esto, gis.stackexchange.com/questions/41807/…
Sam007
5

Ahh! ¡No puedo comentar todavía!

Lo que Haziq publicó sería la forma correcta de la línea de comandos para hacerlo, Sam.

TABLE es lo que quiera nombrarlo y sería el nombre que se usará al llamarlo desde una consulta, la tabla se generará al importarla.

Si te vuelves perezoso como yo, solo uso el increíble SPIT (herramienta de importación de archivos de forma a PostGIS) disponible como un complemento de QGIS para importar todos mis archivos de forma ahora. Asumiendo que está usando QuantumGIS como dijo que estaba usando OpenGeo anteriormente.

RomaH
fuente
1
El problema es que no tengo una GUI. Estoy trabajando en Ubuntu Server de forma remota.
Sam007
SPIT funcionará de forma remota, lo hago todo el tiempo desde el trabajo hasta la base de datos de mi hogar, solo tiene que completar la información de conexión como lo hizo para iniciar sesión en psql.
RomaH
¿Cómo lo ejecuto?
Sam007
Bueno, suponía que estás tomando archivos shp locales y poniéndolos en tu servidor remoto. Debería iniciar QGIS y utilizar el complemento SPIT en su máquina local, conectar su servidor remoto y cargar.
RomaH
Todos mis archivos shp están en el servidor
Sam007