Aggiunta di shapefile al database PostGIS


30

Sono stato in grado di creare un database Postgresql e quindi ho eseguito,

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

Quindi ora posso importare direttamente gli shapefile? Questo sarebbe il comando giusto,

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

Non sono sicuro di come strutturare il database, non avrebbe bisogno di una tabella? Alla fine dovrò aggiungere un sacco di shapefile e quindi c'è un comando per farlo?

Risposte:


49

Prova shp2pgsql. La sintassi di base è come:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h HOST -d DATABASE -U UTENTE

Trovo sempre utile questo cheatsheet di http://www.bostongis.com . Se scorri verso il basso, troverai semplici esempi su come caricare i dati.

Spero che sia d'aiuto.


Ma non ho un tavolo. Quale tabella e schema dovrei creare?
Sam007,

1
Se dai un'occhiata al cheatsheet , (-d|-a|-c|-p)sono le bandiere per le tabelle. Se non hai specificato nulla, sceglierà -cper impostazione predefinita (crea una nuova tabella e la popola). Per quanto riguarda SRID, non lo so - dipende dalla proiezione dei tuoi dati. Se hai il .projfile fornito con gli shapefile, puoi verificarne la proiezione su prj2epsg.org/search . Spero che ti aiuti ..

grazie per la risposta @Haziq. Sono solo confuso su dove -carriva? Ho provato shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhma ricevo un errore dpaste.com/834563
Sam007,

Penso che -cdovrebbe andare dopo -s 4326, e prima /var/www/geo/shapefile/PimaPine.shp... La sintassi è shp2pgsql [OPTIONS] shapefile [schema.]table. La modifica della posizione degli -ceffetti fissi è errata?

No, è sempre lo stesso errore. Potrebbe anche essere di fronte all'errore ROLLBACK amico di questo, gis.stackexchange.com/questions/41807/…
Sam007,

4

Ahh! Non posso ancora commentare!

Quello che Haziq ha pubblicato sarebbe il modo corretto da riga di comando per farlo Sam.

TABELLA è proprio come si desidera denominarlo e sarebbe il nome da utilizzare quando lo si chiama da una query, la tabella verrà generata al momento dell'importazione.

Se diventi pigro come me, uso semplicemente il fantastico SPIT (dallo Shapefile allo strumento di importazione PostGIS) disponibile come plugin QGIS per importare tutti i miei shapefile ora. Supponendo che stai usando QuantumGIS come hai detto che stavi usando OpenGeo in precedenza.


1
il problema è che non ho una GUI. Sto lavorando su Ubuntu Server in remoto.
Sam007,

SPIT funzionerà in remoto, lo faccio sempre dal lavoro al mio DB di casa, devi solo compilare le informazioni di connessione come hai fatto per accedere su psql.
RomaH,

Come eseguirlo
Sam007,

Beh, stavo supponendo che tu stia prendendo file shp locali e li metti sul tuo server remoto. Dovresti avviare QGIS e utilizzare il plug-in SPIT sul tuo computer locale, connettere il tuo server remoto e caricare.
RomaH,

Tutti i miei file shp sono sul server
Sam007,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.