Migration des données de géodatabase dans PostGIS sans applications Esri?

39

Pouvez-vous me dire comment je peux charger des données de géodatabase dans PostGIS sans avoir à installer d'applications Esri?

La solution que j'ai trouvée en ligne parlait d'utiliser ArcGIS pour convertir GDB en SHP, puis pour importer SHP vers PostGIS.

Gerson Galang
la source
Merci beaucoup pour votre réponse. FME pourrait être une solution valable, mais nous la considérons comme une solution très coûteuse. Nous pensons qu'une période d'essai de 14 jours est insuffisante pour une migration. Quelqu'un at-il de l'expérience avec d'autres outils, tels que les scripts GDAL ou GeoKettle? Cordialement.
SonOfabox
FME Desktop est la meilleure solution pour les données de migration

Réponses:

37

Je le fais tout le temps pour mes clients.

Videz vos données dans FileGDB ou Shapefiles puis exécutez la commande suivante:

Pour les fichiers de forme ESRI:

ogr2ogr -f "PostgreSQL" PG: "nombase = nombase utilisateur = postgres" myshapefile.shp

Pour FileGDB:

ogr2ogr -f "PostgreSQL" PG: "nombase = nomutilisateur = postgres" monFichierGDB.gdb

Pour FileGDB, vous devez vous assurer que le pilote FileGDB est installé. Vous le faites avec:

ogrinfo --formats

ce qui devrait montrer quelque part FileGDB pour vous dire qu'il est installé.

Ragi Yaser Burhum
la source
Pouvez-vous donner plus de détails sur l'installation du pilote FileGDB pour OGR?
RyanDalton
7
Le moyen le plus simple pour Windows est trac.osgeo.org/osgeo4w Recherchez le package filegdb (je suis sur le point de le mettre à jour avec des corrections de bugs la semaine prochaine). Si vous êtes sous Linux ou Mac, vous pouvez modifier le script suivant que j'utilise pour le construire à la volée (voir install_filegdb). Gist.github.com/2955440
Ragi Yaser Burhum Le
@RyanDalton et laissez-moi savoir comment ça se passe :)
Ragi Yaser Burhum Le
1
Qu'advient-il des métadonnées avec ce processus? Par exemple, les métadonnées FGDC qui contiennent plus que le système de coordonnées, etc.
Oliver Burdekin
ogr2ogr ne l'écrira pas par défaut , mais en regardant le code, je constate qu'il existe une commande spéciale "GetLayerDefinition" que vous pouvez exécuter à l'invite SQL pour lire ces informations. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"jetterait les métadonnées XML ESRI dans un champ de cette base
Ragi Yaser Burhum
7

Je n'ai pas essayé, je ne peux donc pas vérifier si tout fonctionne, mais l' API de géodatabase fichier peut vous permettre d'exporter les données de la géodatabase fichier vers SHP (et ensuite PostGIS). La documentation dit:

With the API you can... Read and write data
Stephen Lead
la source
Merci Stephen, utile de savoir qu'il existe une API, mais nous allons probablement essayer de le faire s'il n'y a pas vraiment d'outil écrit par les gens qui le fait automatiquement.
Gerson Galang
6
Si vous avez l'API File GEodatabase, vous pouvez également convertir directement à l'aide de GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw le
2
Quelques précautions: l'API développée par ESRI et les outils basés sur celle-ci ne fonctionneront qu'avec le fichier GDB (.gdb) créé ou converti pour être utilisé dans ArcGIS 10 ou une version plus récente. La prise en charge des versions antérieures de Personal GDB (.mdb) provient d’activités de programmation antérieures et peut fonctionner en fonction des données et de l’outil.
V Stuart Foote
@johanvdw J'ai essayé trac.osgeo.org/gdal/wiki/FileGDB il y a quelques jours avant de poser ma question ci-dessus car les instructions sur ce lien ne fonctionnaient pas pour moi également. J'ai essayé la dernière version 1.8.1 de gdal sur mon Ubuntu 10.04, mais cela ne semblait pas installer le plugin File GeoDB dans gdal. J'ai essayé "--with-fgdb = / usr / local / FichierGDB_API" et "--with-fgdb = / usr / local" car leur documentation n'était pas claire pour spécifier ce que je devrais utiliser dans le paramètre "with-fgdb" mais rien n'a fonctionné.
Gerson Galang
GCG: formez la même page: (remplacez / usr / local / FileGDB_API par n’importe où vous avez extrait FileGDB_API_ <version> .tar.gz)
johanvdw le
5

L'API de géodatabase fichier Esri ne fonctionne qu'avec les géodatabases de fichier créées à l'aide de la version 10.x; les versions antérieures ne fonctionnent pas avec GDAL, QGIS ou toute autre solution dépendant de l' API de géodatabase fichier ouverte . Les anciennes géodatabases personnelles dépendent de MS Access. Des lecteurs et du code sont disponibles.

Si vous disposez d'une géodatabase fichier 10.x, vous pouvez lire la couche à partir de FileGDB et la charger dans PostGIS à l'aide d'une seule commande ogr2ogr ( voir la documentation ):

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

Pour ce faire, je devais également télécharger VS2010 Express Edition et créer mon propre plug-in GDAL, ogr et 1.3 de l'API de géodatabase fichier ouverte.

Ce que je n'ai pas pu faire est de migrer une ancienne géodatabase fichier 9.x sans utiliser le logiciel esri (non disponible pour moi) - je ne peux pas aller au-delà de la ...

HRESULT = -2147220965, errorText = "Cette version de la GeoDatabase est non valide ou obsolète."

... lorsque vous essayez d'ouvrir 9.x "gdb" avec l'API ouverte qui ne prend en charge que 10.x "gdb".

Alexis Brooker
la source
Les dernières versions (mi-2014) d'ogr2ogr avec OpenFileGDB peuvent au moins lire l' ancienne version des géodatabases de fichier ESRI.
c.gutierrez
2

Même si je ne l'ai pas encore essayé moi-même, je viens de rencontrer ce didacticiel (qui est un fichier de formes -> PostGIS) qui utilise le logiciel open source geoETL appelé " Spatial Data Integrator ". Je ne sais pas s'il prend en charge Esri GDB ou non, mais il pourrait être intéressant de vérifier si vous pouvez utiliser ce produit pour effectuer la conversion similaire de GDB en PostGIS sans utiliser de produits ESRI.

Les autres paquets ETL dont j'ai entendu parler sont FME de Safe Sofware ($, très populaire) et GeoKettle (open-source), ainsi que de nombreuses autres références sur la page wikipedia Spatial ETL .

EDIT : En creusant un peu plus loin, il semble que SDI ne supporte pas directement la lecture de EsriGDB , mais peut lire les formats de fichier OGR disponibles .

RyanDalton
la source
2

FWIW travaille actuellement sur la création d’une BDG pour le chargeur de postgis. Cela dépend de la dernière ligne de réseau GDAL dotée de liaisons GDB. Je n'ai pas eu l'occasion de me compiler et de m'essayer, mais j'espère que PostGIS 2.0 sera disponible.

vérifier - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Vous pouvez probablement donner un buzz à Paul sur le groupe de discussion PostGIS pour savoir où il se trouve avec cela. http://www.postgis.org/mailman/listinfo/postgis-users

Pour le format Personal GeoDatabase, GDAL peut le lire parfaitement et c’est ce que j’utilise habituellement pour exporter des données hors de geodb personnel.

LR1234567
la source
0

Répondant à ma propre question ici que j'ai postée ici il y a quelque temps ...

Une autre option que j'ai trouvée en ligne (en plus des suggestions ci-dessus) consiste à utiliser pgdbf ( https://github.com/kstrauser/pgdbf ), qui exporte le script SQL que vous pouvez ensuite utiliser pour intégrer manuellement postgres.

Gerson Galang
la source