Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

19 votos

¿Migrar datos de ArcSDE a PostGIS?

Se me ha sugerido que vuelva a hacer esta pregunta, pero tal vez redactada de forma diferente a cómo hacerlo Carga masiva de múltiples shapefiles en PostGIS .

Soy nuevo en postgis y sql pero quiero usar postgis como esclavo (de momento) de ArcSDE. Por lo tanto, lo que busco es un poco de ayuda en woking cómo podría ir sobre la carga por lotes de datos ArcSDE en PostGIS cada noche.

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

Mi gran plan es sustituir ArcSDE/ArcGIS con el tiempo por PostGIS, QGIS y GeoServer o MapServer.

19voto

hernan43 Puntos 566

En lugar de hacer una conversión DB -> archivo -> DB, donde los Esri Shapefiles son el componente intermediario basado en archivos, podría valer la pena investigar una transferencia más directa DB -> DB. Hay algunas herramientas por ahí que pueden hacer esto, pero sólo me estoy centrando en el código abierto GDAL/OGR herramientas.

Suponiendo que disponga de un servidor Windows, puede instalar fácilmente GDAL/OGR utilizando OSGeo4W . Con el modo de instalación avanzada, tiene la posibilidad de seleccionar configuraciones de paquetes personalizadas, como el SDE (véase esta lista de paquetes para asegurarse de que existe un paquete adecuado para su versión de SDE (sólo son compatibles las versiones 9.0 a 9.2 de SDE). Estos paquetes son sólo las cabeceras y envoltorios, y requiere que instale las librerías SDE, que debe tener en un CD/DVD ROM, y asegurarse 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 utilizar algunas herramientas:

  • La herramienta de línea de comandos ogr2ogr desde el shell OSGeo4W, que necesitará un comando algo como: 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 los distintos -append , -overwrite o -update opciones)
  • Copiar y modificar un script Python existente que se conecta a SDE, y podrías modificarlo para transferir datos a otra fuente de datos.

El principal inconveniente de este método es que es complicado de configurar.

6voto

poundifdef Puntos 6005

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

Si quiere ser más sofisticado, puede instalar GDAL y utilizar las herramientas OGR (que tienen un conector ArcSDE) y omitir la exportación del shapefile. Encontrará información sobre el conector ArcSDE en aquí .

2voto

Binarytales Puntos 1145

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

Puede tener ArcSDE sobre Postgresql+Postgis. Este sería su maestro y único db.

ArcSDE puede configurarse para utilizar geometrías postgis y no st_geometries (propiedad de ESRI).

Esto significa que puede utilizar cualquier herramienta de Postgis para utilizar directamente las tablas espaciales cargadas/editadas de ArcSDE, ya que de hecho son tablas nativas de Postgis.

Por ejemplo, puede utilizar qgis para conectarse directamente a la base de datos postgis y leer los mismos datos que arcgis a través de arcsde.

1voto

jmapping Puntos 62

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

http://www.spatialytics.org/projects/geokettle/

Yo uso Geokettle para mover datos entre sql server y PostGIS todo el tiempo. Sin embargo, mientras que funciona bien con PostGIS hay desafíos cuando se trabaja con el tipo de datos espaciales de SQL Server (ver consejos a continuación). Además, esto supone que está almacenando geometrías SDE como el tipo de datos espaciales nativo de SQL Server. Puede hacerlo con la palabra clave Geometry al cargar datos a través de ArcCatalog.

Pista 1: cuando seleccione datos DESDE sql server aplique .STAsText() al campo de geometría o Geokettle se ahogará con el tipo de datos sql server.

Pista 2: Al insertar datos INTO sql server tendrá que insertar la geometría como texto en un campo de texto. A continuación, utilice el paso sql para añadir una nueva columna de geometría (si es necesario) y rellenarla a partir de la geometría de texto. De esta forma se utiliza SQL Server para construir la geometría a partir de una representación de texto estándar OGC de una geometría.

Pista 3: Asegúrese de registrar su nueva tabla espacial en SDE.

0voto

Niall C. Puntos 1234

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

Ayuda de esri
NOTA: Esto requerirá licencias duplicadas si ambas bases de datos no están en la misma máquina.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X