Migrazione dei dati di geodatabase in PostGIS senza app Esri?


39

Potete dirmi come posso caricare i dati di geodatabase in PostGIS senza dover installare le app Esri?

La soluzione che ho trovato online parlava dell'utilizzo di ArcGIS per convertire GDB in SHP e quindi importare SHP in PostGIS.


Grazie mille per la tua risposta. FME potrebbe essere una soluzione valida, ma la consideriamo una soluzione molto costosa. Riteniamo che un periodo di prova di 14 giorni non sia sufficiente per una migrazione. Qualcuno ha esperienza con altri strumenti, come gli script GDAL o GeoKettle? Saluti.
SonOfabox,

FME Desktop è la migliore soluzione per i dati di migrazione

Risposte:


37

Lo faccio sempre per i miei clienti.

Dump dei dati su FileGDB o Shapefiles quindi eseguire il comando seguente:

Per gli Shapefile ESRI:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname user = postgres" myshapefile.shp

Per FileGDB:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname user = postgres" myFileGDB.gdb

Per FileGDB, è necessario assicurarsi che il driver FileGDB sia installato. Lo fai con:

ogrinfo --formati

che dovrebbe mostrare FileGDB da qualche parte per dirti che è installato.


Potete fornire maggiori dettagli sull'installazione del driver FileGDB per OGR?
Ryan Dalton,

7
Il modo più semplice per Windows è trac.osgeo.org/osgeo4w Cerca il pacchetto filegdb (sto per aggiornarlo con correzioni di bug la prossima settimana). Se sei su Linux o Mac, puoi modificare il seguente script che uso per crearlo
Ragi Yaser Burhum

@RyanDalton e fammi sapere come va :)
Ragi Yaser Burhum,

1
Cosa succede ai metadati con questo processo? Ad esempio i metadati FGDC che contengono più del semplice sistema di coordinate ecc.
Oliver Burdekin,

ogr2ogr non lo scriverà per impostazione predefinita , ma guardando il codice, vedo che c'è un comando speciale "GetLayerDefinition" che puoi eseguire nel prompt SQL per leggere queste informazioni. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"scaricare i metadati XML ESRI in un campo in quel db
Ragi Yaser Burhum

7

Non l'ho provato, quindi non posso verificarne il funzionamento, ma l' API File Geodatabase potrebbe consentire di esportare i dati dal file Geodatabase a SHP (e quindi PostGIS). La documentazione dice:

With the API you can... Read and write data

Grazie Stefano, utile sapere che esiste un'API ma probabilmente proveremo che se non ci sono davvero strumenti là fuori che la gente ha scritto che lo fa automagicamente.
Gerson Galang,

6
Se si dispone dell'API File GEodatabase, è possibile convertire direttamente anche tramite GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw

2
Un po 'di attenzione: l'API sviluppata da ESRI e gli strumenti basati su di essa funzioneranno solo con File GDB (.gdb) creato o convertito per l'uso in ArcGIS 10 o versioni successive. Il supporto per le versioni precedenti di Personal GDB (.mdb) proviene da precedenti sforzi di programmazione e può funzionare in base ai dati e allo strumento.
V Stuart Foote,

@johanvdw Ho provato trac.osgeo.org/gdal/wiki/FileGDB un paio di giorni fa prima di pubblicare la mia domanda sopra poiché le istruzioni su quel link non funzionavano anche per me. Ho provato l'ultimo gdal 1.8.1 sul mio Ubuntu 10.04 ma questo non sembrava installare il plugin File GeoDB in gdal. Ho provato "--with-fgdb = / usr / local / FileGDB_API" e "--with-fgdb = / usr / local" poiché la loro documentazione non era chiara nello specificare cosa avrei dovuto usare nel parametro "with-fgdb" ma niente ha funzionato.
Gerson Galang,

GCG: forma quella stessa pagina: (sostituisci / usr / local / FileGDB_API con ovunque tu abbia estratto FileGDB_API_ <version> .tar.gz)
johanvdw

5

L'API di geodatabase di file Esri funziona solo con geodatabase di file creati utilizzando 10.x: le versioni precedenti non funzioneranno con GDAL, QGIS o qualsiasi altra cosa che dipenda dall'API di geodatabase di file aperta . I vecchi database geografici personali dipendono da MS Access e sono disponibili lettori e codice.

Se hai un geodatabase di file 10.x puoi leggere il layer da FileGDB e caricarlo in PostGIS con un singolo comando ogr2ogr ( vedi la documentazione ):

ogr2ogr -overwrite -skipfailures -f "PostgreSQL" PG:"host=myhost user=myuser dbname=mydb password=mypass" "C:\somefolder\BigFileGDB.gdb" "MyFeatureClass"

Per fare questo ho anche dovuto scaricare VS2010 express edition e creare il mio GDAL, plugin ogr e 1.3 dell'API geodatabase a file aperto.

Quello che non sono stato in grado di fare è migrare un vecchio geodatabase di file 9.x senza usare il software esri (non disponibile per me atm) - Non riesco a superare il ...

HRESULT = -2147220965, errorText = "Questa versione di GeoDatabase non è valida o non è aggiornata."

... quando si tenta di aprire 9.x "gdb" con l'API aperta che supporta solo 10.x "gdb".


Le ultime versioni (metà 2014) di ogr2ogr con OpenFileGDB possono almeno leggere la versione precedente dei database di file ESRI.
c.gutierrez,

2

Anche se non l'ho ancora provato da solo, mi sono appena imbattuto in questo tutorial (che è shapefile -> PostGIS) che utilizza il software geoETL open source chiamato " Spatial Data Integrator ". Non sono sicuro che supporti Esri GDB o meno, ma potrebbe valere la pena di indagare ulteriormente per vedere se è possibile utilizzare questo prodotto per effettuare la conversione simile da GDB a PostGIS senza utilizzare i prodotti ESRI.

Altri pacchetti ETL di cui ho sentito parlare sono FME di Safe Sofware ($, molto popolare) e GeoKettle (open-source), oltre a molti altri riferimenti sulla pagina wikipedia ETL spaziale .

EDIT : Dopo aver scavato un po 'di più, sembra che SDI non supporti direttamente la lettura di EsriGDB , ma possa leggere i formati di file OGR disponibili .


2

Il lavoro di FWIW sta continuando a creare un GDB per il caricatore di postgis. Questo dipende dall'ultimo trunk GDAL che ha attacchi GDB. Non ho avuto la possibilità di compilare e provare me stesso, ma spero di farlo prima che PostGIS 2.0 sia uscito.

controlla - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Probabilmente puoi dare a Paul un brusio sul newsgroup di PostGIS per scoprire dove si trova. http://www.postgis.org/mailman/listinfo/postgis-users

Per il formato di GeoDatabase personale, GDAL può leggere bene e questo è quello che di solito uso per esportare dati da geodb personale.


0

Rispondere alla mia domanda qui che ho pubblicato qui qualche tempo fa ...

Un'altra opzione che ho trovato online (oltre ai suggerimenti sopra) è usare pgdbf ( https://github.com/kstrauser/pgdbf ) che scarica lo script SQL che puoi quindi usare per inserire manualmente in Postgres.

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.