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.
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.
Risposte:
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.
ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"
scaricare i metadati XML ESRI in un campo in quel db
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
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".
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 .
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.
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.