¿Migrar datos de geodatabase a PostGIS sin aplicaciones Esri?

39

¿Me puede decir cómo puedo cargar datos de geodatabase en PostGIS sin tener que instalar aplicaciones de Esri?

La solución que encontré en línea habló sobre el uso de ArcGIS para convertir GDB a SHP y luego importar SHP a PostGIS.

Gerson Galang
fuente
Muchas gracias por su respuesta. FME podría ser una solución válida, pero la consideramos una solución muy costosa. Creemos que un período de prueba de 14 días es insuficiente para una migración. ¿Alguien tiene experiencia con otras herramientas, como scripts GDAL o GeoKettle? Saludos.
SonOfabox
FME Desktop es la mejor solución para los datos de migración

Respuestas:

37

Lo hago todo el tiempo por mis clientes.

Volcar sus datos a FileGDB o Shapefiles y luego ejecutar el siguiente comando:

Para archivos de forma ESRI:

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

Para FileGDB:

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

Para FileGDB, debe asegurarse de que el controlador FileGDB esté instalado. Lo haces con:

ogrinfo --formatos

que debería mostrar FileGDB en algún lugar para decirle que está instalado.

Ragi Yaser Burhum
fuente
¿Puede dar más detalles sobre la instalación del controlador FileGDB para OGR?
RyanDalton
77
La forma más fácil para Windows es trac.osgeo.org/osgeo4w Busque el paquete filegdb (estoy a punto de actualizarlo con correcciones de errores la próxima semana). Si está en Linux o Mac, puede modificar el siguiente script que uso para compilarlo
Ragi Yaser Burhum
@RyanDalton y déjame saber cómo va :)
Ragi Yaser Burhum
1
¿Qué les sucede a los metadatos con este proceso? Por ejemplo, metadatos de FGDC que contienen más que solo el sistema de coordenadas, etc.
Oliver Burdekin
ogr2ogr no lo escribirá de manera predeterminada , pero al mirar el código, veo que hay un comando especial "GetLayerDefinition" que puede ejecutar en el indicador SQL para leer esta información. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"volcaría los metadatos XML de ESRI a un campo en esa base de datos
Ragi Yaser Burhum
7

No lo he intentado, así que no puedo verificar que funcione, pero la API de geodatabase de archivos puede permitirle exportar los datos desde la geodatabase de archivos a SHP (y desde allí PostGIS). La documentación dice:

With the API you can... Read and write data
Stephen Lead
fuente
Gracias Stephen, útil para saber que hay una API, pero probablemente lo intentaremos si realmente no hay ninguna herramienta que la gente haya escrito que lo haga de forma automática.
Gerson Galang
66
Si tiene la API File GEodatabase, también puede convertir directamente usando GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw
2
Precaución: la API desarrollada por ESRI y las herramientas basadas en ella solo funcionarán con el archivo GDB (.gdb) creado o convertido para usar en ArcGIS 10 o posterior. El soporte para versiones anteriores de Personal GDB (.mdb) proviene de esfuerzos de programación anteriores y puede funcionar dependiendo de los datos y la herramienta.
V Stuart Foote
@johanvdw Intenté trac.osgeo.org/gdal/wiki/FileGDB hace un par de días antes de publicar mi pregunta anterior, ya que las instrucciones en ese enlace tampoco me funcionaron. Probé el último gdal 1.8.1 en mi Ubuntu 10.04 pero no pareció instalar el complemento File GeoDB en gdal. Intenté "--with-fgdb = / usr / local / FileGDB_API" y "--with-fgdb = / usr / local" ya que su documentación no era clara al especificar lo que debería usar en el parámetro "with-fgdb" Pero nada funcionó.
Gerson Galang
GCG: forme esa misma página: (reemplace / usr / local / FileGDB_API por donde haya extraído FileGDB_API_ <versión> .tar.gz)
johanvdw
5

La API de geodatabase de archivos de Esri solo funciona con geodatabases de archivos creadas con 10.x: las versiones anteriores no funcionarán con GDAL, QGIS o cualquier otra cosa que dependa de la API de geodatabase de archivos abiertos . Las antiguas geodatabases personales dependen de MS Access y hay lectores y códigos disponibles.

Si tiene una geodatabase de archivos 10.x, puede leer la capa de FileGDB y cargarla en PostGIS con un solo comando ogr2ogr ( consulte la documentación ):

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

Para hacer esto, también tuve que descargar la edición express VS2010 y construir mi propio GDAL, ogr plugin y 1.3 de la API de geodatabase de archivos abiertos.

Lo que no he podido hacer es migrar una geodatabase de archivos 9.x anterior sin usar el software esri (no disponible para mi cajero automático): no puedo superar el ...

HRESULT = -2147220965, errorText = "Esta versión de GeoDatabase no es válida o está desactualizada".

... al intentar abrir 9.x "gdb" con la API abierta que solo admite 10.x "gdb".

Alexis Brooker
fuente
Las últimas versiones (mediados de 2014) de ogr2ogr con OpenFileGDB pueden leer al menos una versión anterior de las geodatabases de archivos ESRI.
c.gutierrez
2

Aunque todavía no lo he probado, acabo de encontrar este tutorial (que es shapefile -> PostGIS) que utiliza el software de código abierto geoETL llamado " Integrador de datos espaciales ". No estoy seguro de si es compatible con Esri GDB o no, pero podría valer la pena investigar más para ver si puede usar este producto para hacer una conversión similar de GDB a PostGIS sin usar productos ESRI.

Otros paquetes ETL de los que he oído hablar son FME de Safe Sofware ($, muy popular) y GeoKettle (código abierto), así como muchas más referencias en la página de Wikipedia espacial de ETL .

EDITAR : Al profundizar un poco más, parece que SDI no admite directamente la lectura de EsriGDB , pero puede leer los formatos de archivo OGR disponibles .

RyanDalton
fuente
2

Se está trabajando en FWIW para crear un GDB para el cargador postgis. Esto depende de la última troncal GDAL que tiene enlaces GDB. No he tenido la oportunidad de compilar e intentarlo, pero espero que antes de que PostGIS 2.0 salga.

echa un vistazo - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Probablemente puedas darle a Paul un zumbido en el grupo de noticias PostGIS para averiguar dónde está con esto. http://www.postgis.org/mailman/listinfo/postgis-users

Para el formato de GeoDatabase personal, GDAL puede leer eso bien y eso es lo que generalmente uso para exportar datos de geodb personal.

LR1234567
fuente
0

Respondiendo a mi propia pregunta aquí que publiqué aquí hace un tiempo ...

Otra opción que encontré en línea (además de las sugerencias anteriores) es usar pgdbf ( https://github.com/kstrauser/pgdbf ) que descarga el script SQL que luego puede usar para ingerir postgres manualmente.

Gerson Galang
fuente