Migrieren von Geodatabase-Daten in PostGIS ohne Esri-Apps?

39

Können Sie mir mitteilen, wie ich Geodatabase-Daten in PostGIS laden kann, ohne Esri-Apps installieren zu müssen?

Die Lösung, die ich online gefunden habe, sprach über die Verwendung von ArcGIS zur Konvertierung von GDB in SHP und den anschließenden Import von SHP in PostGIS.

Gerson Galang
quelle
Ich danke Ihnen sehr für Ihre Antwort. FME könnte eine gültige Lösung sein, aber wir betrachten es als eine sehr teure Lösung. Wir denken, dass eine 14-tägige Testphase für eine Migration nicht ausreicht. Hat jemand Erfahrung mit anderen Tools wie GDAL-Skripten oder GeoKettle? Grüße.
SonOfabox
FME Desktop ist die beste Lösung für die Migrationsdaten

Antworten:

37

Ich mache es die ganze Zeit für meine Kunden.

Speichern Sie Ihre Daten in FileGDB oder Shapefiles und führen Sie den folgenden Befehl aus:

Für ESRI-Shapefiles:

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

Für FileGDB:

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

Für FileGDB müssen Sie sicherstellen, dass der FileGDB-Treiber installiert ist. Du machst es mit:

ogrinfo --formate

Hier sollte FileGDB angezeigt werden, um anzuzeigen, dass es installiert ist.

Ragi Yaser Burhum
quelle
Können Sie weitere Details zur Installation des FileGDB-Treibers für OGR angeben?
RyanDalton
7
Der einfachste Weg für Windows ist trac.osgeo.org/osgeo4w. Suchen Sie nach dem Paket filegdb (ich werde es nächste Woche mit Fehlerkorrekturen aktualisieren). Wenn Sie unter Linux oder Mac arbeiten, können Sie das folgende Skript ändern, das ich zum direkten Erstellen verwende
Ragi Yaser Burhum
@ RyanDalton und lassen Sie mich wissen, wie es geht :)
Ragi Yaser Burhum
1
Was passiert mit Metadaten bei diesem Prozess? Zum Beispiel FGDC-Metadaten, die mehr als nur das Koordinatensystem usw. enthalten
Oliver Burdekin
ogr2ogr schreibt es nicht standardmäßig , aber wenn ich mir den Code anschaue, sehe ich, dass es einen speziellen "GetLayerDefinition" -Befehl gibt, den Sie in der SQL-Eingabeaufforderung ausführen können, um diese Informationen zu lesen. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"würde die ESRI XML-Metadaten in ein Feld in dieser
Datenbank speichern
7

Ich habe dies nicht ausprobiert und kann daher nicht überprüfen, ob es funktioniert. Mit der File-Geodatabase-API können Sie jedoch möglicherweise die Daten aus der File-Geodatabase nach SHP (und anschließend nach PostGIS) exportieren. In der Dokumentation heißt es:

With the API you can... Read and write data
Stephen Blei
quelle
Danke Stephen, nützlich zu wissen, dass es eine API gibt, aber wir werden es wahrscheinlich versuchen, wenn es kein Tool gibt, das die Leute geschrieben haben und das dies automatisch tut.
Gerson Galang
6
Wenn Sie die File-GEodatabase-API haben, können Sie auch direkt mit GDAL konvertieren: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw
2
Vorsicht: Die von ESRI entwickelte API und die darauf basierenden Tools funktionieren nur mit File GDB (.gdb), die für die Verwendung in ArcGIS 10 oder höher erstellt oder konvertiert wurden. Die Unterstützung früherer Personal GDB-Versionen (.mdb) stammt aus früheren Programmierversionen und funktioniert möglicherweise abhängig von den Daten und dem Tool.
V Stuart Foote
@johanvdw Ich habe vor ein paar Tagen trac.osgeo.org/gdal/wiki/FileGDB ausprobiert, bevor ich meine Frage oben gepostet habe, da die Anweisungen auf diesem Link auch für mich nicht funktionierten. Ich habe das neueste gdal 1.8.1 auf meinem Ubuntu 10.04 ausprobiert, aber das File GeoDB-Plugin schien nicht in gdal installiert zu sein. Ich habe "--with-fgdb = / usr / local / FileGDB_API" und "--with-fgdb = / usr / local" ausprobiert, da ihre Dokumentation nicht klar war, was ich im Parameter "with-fgdb" verwenden sollte aber nichts hat funktioniert.
Gerson Galang
GCG: bilde dieselbe Seite: (ersetze / usr / local / FileGDB_API mit dem, was du an FileGDB_API_ <version> .tar.gz extrahiert hast)
johanvdw
5

Die File-Geodatabase-API von Esri funktioniert nur mit File-Geodatabases, die mit 10.x erstellt wurden. Die älteren Versionen funktionieren nicht mit GDAL, QGIS oder anderen Anwendungen, die von der Open-File-Geodatabase-API abhängen . Die alten Personal Geodatabases sind von MS Access abhängig und es stehen Reader und Code zur Verfügung.

Wenn Sie über eine File-Geodatabase der Version 10.x verfügen, können Sie Layer aus FileGDB lesen und mit einem einzigen Befehl ogr2ogr in PostGIS laden ( siehe Dokumentation ):

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

Dazu musste ich auch die Express Edition von VS2010 herunterladen und meine eigene GDAL, das OGR-Plugin und 1.3 der Open File-Geodatabase-API erstellen.

Ich konnte eine ältere 9.x-File-Geodatabase nicht ohne die Verwendung der esri-Software migrieren (für mich nicht verfügbar) - ich komme nicht über die ...

HRESULT = -2147220965, errorText = "Diese Version der GeoDatabase ist entweder ungültig oder veraltet."

... beim Versuch, die 9.x "gdb" mit der offenen API zu öffnen, die nur 10.x "gdb" unterstützt.

Alexis Brooker
quelle
Die neuesten Versionen (Mitte 2014) von ogr2ogr mit OpenFileGDB mindestens lesen ältere Version von ESRI File - Geodatabases.
c.gutierrez
2

Obwohl ich es noch nicht selbst ausprobiert habe, bin ich auf dieses Tutorial gestoßen (Shapefile -> PostGIS), das die Open-Source-GeoETL-Software " Spatial Data Integrator " verwendet. Ich bin nicht sicher, ob es Esri GDB unterstützt oder nicht, aber es könnte sich lohnen, weiter zu untersuchen, ob Sie mit diesem Produkt eine ähnliche Konvertierung von GDB zu PostGIS ohne Verwendung von ESRI-Produkten durchführen können.

Andere ETL-Pakete, von denen ich gehört habe, sind FME von Safe Sofware (sehr beliebt) und GeoKettle (Open Source) sowie viele weitere Referenzen auf der Spatial ETL-Wikipedia- Seite.

BEARBEITEN : Wenn Sie ein bisschen weiter graben, sieht es so aus, als ob SDI das Lesen von EsriGDB nicht direkt unterstützt , aber die verfügbaren OGR-Dateiformate lesen kann .

RyanDalton
quelle
2

FWIW arbeitet daran, eine GDB für den Postgis-Loader zu erstellen. Dies hängt von der neuesten GDAL-Amtsleitung ab, die über GDB-Bindungen verfügt. Hatte noch keine Gelegenheit, mich selbst zu kompilieren und auszuprobieren, hoffe aber, bevor PostGIS 2.0 herauskommt.

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

Sie können Paul wahrscheinlich über die PostGIS-Newsgroup informieren, um herauszufinden, wo er damit ist. http://www.postgis.org/mailman/listinfo/postgis-users

Für das Personal GeoDatabase-Format kann GDAL das gut lesen und das ist es, was ich normalerweise verwende, um Daten aus Personal Geodb zu exportieren.

LR1234567
quelle
0

Beantworte hier meine eigene Frage, die ich vor einiger Zeit hier gepostet habe ...

Eine andere Option, die ich online gefunden habe (zusätzlich zu den oben genannten Vorschlägen), ist die Verwendung von pgdbf ( https://github.com/kstrauser/pgdbf ), das das SQL-Skript ausgibt, mit dem Sie Postgres manuell einlesen können.

Gerson Galang
quelle