¿Cómo migrar datos de ArcSDE a PostGIS?

19

Se ha sugerido que vuelva a hacer esta pregunta, pero tal vez con una redacción diferente a cómo Carga masiva múltiples shapefiles en PostGIS .

Soy nuevo en postgis y sql pero quiero usar postgis como esclavo (por el momento) para ArcSDE. Por lo tanto, lo que busco es algo de ayuda para saber cómo puedo ir subiendo los datos de ArcSDE en PostGIS todas las noches.

Puedo producir un script en Python para exportar los datos de ArcSDE a SHP todas las noches, pero no estoy seguro de cómo cargar por lotes los archivos SHP exportados en PostGIS, sobrescribiendo los que ya existían en Postgis, todo como una tarea automática. archivo supongo).

Mi gran plan es reemplazar ArcSDE / ArcGIS a tiempo con PostGIS, QGIS y GeoServer o MapServer.

Cualquier ayuda sería genial.

    
pregunta geosmiles 02.08.2011 - 21:01

7 respuestas

19

En lugar de hacer un DB - > archivo - > La conversión de DB, donde Esri Shapefiles es el componente basado en archivos de intermediarios, podría valer la pena investigar un DB más directo - > Transferencia DB Hay algunas herramientas que pueden hacer esto, pero solo me estoy enfocando en las herramientas de código abierto GDAL / OGR .

Suponiendo que tiene un servidor Windows, puede instalar GDAL / OGR fácilmente usando OSGeo4W . Con el modo de instalación avanzada, tiene la capacidad de seleccionar configuraciones de paquetes personalizadas, como el controlador SDE (consulte < a href="http://trac.osgeo.org/osgeo4w/wiki/PackageListing#a1.8.xstable"> esta lista de paquetes para garantizar que haya una coincidencia adecuada para su versión de SDE, solo SDE las versiones 9.0 a 9.2 son compatibles). Estos paquetes son solo los encabezados y envoltorios, y requieren que instale las bibliotecas SDE, que debe tener en un CD / DVD ROM, y asegúrese de que las variables PATH estén configuradas adecuadamente para que GDAL / OGR las encuentre. Una instalación exitosa mostrará "SDE" en algún lugar con el siguiente comando en un shell OSGeo4W: ogr2ogr --formats

Después de configurar GDAL / OGR, puede usar algunas herramientas:

  • La herramienta de línea de comandos ogr2ogr del shell OSGeo4W, que necesitará un comando parecido a: ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version] ( también puede explorar las distintas opciones de -append , -overwrite o -update )
  • Copie y modifique un script de Python existente que se conecta a SDE, y podría modificarlo para transferir datos a otra fuente de datos.

La principal advertencia a este método es que su configuración es complicada.

    
respondido por el Mike T 02.08.2011 - 23:18
6

PostGIS tiene un cargador llamado shp2pgsql que puede usar para cargar shapefiles en un Base de datos PostGIS. Una de sus opciones ("-d") elimina la tabla de base de datos existente antes de cargar los datos. Debería ser bastante sencillo crear un archivo por lotes o un script que pueda recorrer todos los shapefiles y cargarlos por usted.

Si desea obtener más información al respecto, puede instalar GDAL y usar las herramientas OGR (que tienen un conector ArcSDE) y omitir la exportación del shapefile. La información sobre el conector de ArcSDE se puede encontrar aquí .

    
respondido por el lagerratrobe 02.08.2011 - 21:32
1

Otro enfoque sería utilizar un ETL espacial como Geokettle (código abierto).

enlace

Uso Geokettle para mover datos entre el servidor SQL y PostGIS todo el tiempo. Sin embargo, aunque funciona bien con PostGIS, existen desafíos cuando se trabaja con el tipo de datos espaciales de SQL Server (consulte las sugerencias a continuación). Además, esto supone que está almacenando geometrías SDE como el tipo de datos espaciales nativos de SQL Server. Puede hacer esto con la palabra clave Geometry al cargar datos a través de ArcCatalog.

Sugerencia 1: al seleccionar datos DESDE el servidor sql, aplique .STAsText () al campo de geometría o Geokettle se ahogará con el tipo de datos del servidor sql.

Sugerencia 2: cuando inserte datos en el servidor sql, necesitará insertar la geometría como texto en un campo de texto. Luego use el paso sql para agregar una nueva columna de geometría (si es necesario) y rellénela desde la geometría del texto. De esa manera, utiliza SQL Server para construir la geometría a partir de una representación de texto estándar de OGC de una geometría.

Sugerencia 3: Asegúrese de registrar su nueva tabla espacial con SDE.

    
respondido por el jmapping 21.12.2012 - 17:07
0

Considere configurar la replicación de la base de datos en la base de datos original de 9.3 db.
No funciona tan bien como el nuevo 10, pero ...
replica eso a otro sde en postgresql usando el tipo de datos postgis pg_geometry.

Aquí hay algo de ayuda de Esri
NOTA: Esto requerirá licencias duplicadas si ambos dbs no están en la misma máquina

    
respondido por el Brad Nesom 02.08.2011 - 23:02
0

Podrías escribir ArcObjects en:

A) volcar su base de datos arcsde; B) Código c # sencillo para generar sqls de shp2pgsql; C) Código c # sencillo para volcar tablas antiguas; D) Sencillo c # para ejecutar todos los shp2pgsql en tu postgresql;

Puede usar el controlador npgsql para lograr esto, ejecutando funciones y sentencias SQL directamente en su base de datos de Postgis;

    
respondido por el George Silva 06.08.2011 - 16:20
0

¿Cuál es su geometría de ArcSDE ( almacenamiento de geodatabase en bases de datos relacionales )? En tal escenario, puede considerar usar el tipo ST_Geometry y luego usar la replicación PostGre / PostGIS ( PostGIS Replicación @ FOSS4G ) herramientas. Este esquema puede tener la ventaja de utilizar las funciones de ArcSDE / ArcGIS / geodatabase para la edición (base de datos de edición) y las herramientas de código abierto para la difusión (base de datos de difusión replicada).

    
respondido por el toto 07.12.2011 - 10:00
0

Sé que llego tarde a la fiesta, pero hay otra opción para esto que evita tener 2 bases de datos.

Puedes tener ArcSDE encima de Postgresql + Postgis. Este sería tu maestro y solo db.

ArcSDE se puede configurar para usar geometrías postgis y no st_geometries (propiedad de ESRI).

Esto significa que luego puede usar cualquier herramienta de Postgis para usar directamente las tablas espaciales cargadas / editadas de ArcSDE, ya que en realidad son tablas nativas de Postgis.

Por ejemplo, puedes usar qgis para conectarte a la base de datos de Postgis directamente y leer los mismos datos que los arcgis a través de arcsde.

    
respondido por el Duarte Carreira 03.02.2012 - 17:18

Lea otras preguntas en las etiquetas