Se ha sugerido que haga esta pregunta nuevamente, pero tal vez esté redactada de manera diferente a cómo cargar en masa múltiples archivos de forma 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 un poco de ayuda para averiguar cómo podría realizar la carga por lotes de datos de ArcSDE en PostGIS todas las noches.
Puedo producir un script de Python para exportar 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 como una tarea automática (archivo por lotes, supongo )
Mi gran plan es reemplazar ArcSDE / ArcGIS a tiempo con PostGIS, QGIS y GeoServer o MapServer.
fuente
Respuestas:
En lugar de hacer una conversión DB -> archivo -> DB, donde Esri Shapefiles es el componente basado en un archivo intermediario, podría valer la pena investigar una transferencia DB -> DB más directa. Existen algunas herramientas que pueden hacer esto, pero solo me estoy centrando en las herramientas de código abierto GDAL / OGR .
Suponiendo que tiene un servidor de Windows, puede instalar fácilmente GDAL / OGR usando OSGeo4W . Con el modo de instalación avanzada, tiene la capacidad de seleccionar configuraciones de paquetes personalizados, como el controlador SDE (consulte esta lista de paquetes para asegurarse de que haya una coincidencia adecuada para su versión SDE; solo se admiten las versiones SDE 9.0 a 9.2). Estos paquetes son solo los encabezados y envoltorios, y requiere 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 alguna parte con el siguiente comando en un shell OSGeo4W:
ogr2ogr --formats
Después de configurar GDAL / OGR, puede usar algunas herramientas:
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version]
(también se puede explorar los diferentes-append
,-overwrite
o-update
las opciones)La advertencia principal de este método es que es complicado de configurar.
fuente
shp2pgsql
,psql
, etc.PostGIS tiene un cargador llamado shp2pgsql que puede usar para cargar archivos de forma en una base de datos PostGIS. Una de sus opciones ("-d") descarta la tabla de base de datos existente antes de cargar los datos. Debería ser bastante simple crear un archivo por lotes o un script que pueda recorrer todos los archivos de forma y cargarlos por usted.
Si desea obtener más detalles al respecto, puede instalar GDAL y utilizar las herramientas OGR (que tienen un conector ArcSDE) y omitir la exportación del archivo de forma. Puede encontrar información sobre el conector ArcSDE aquí .
fuente
Sé que llego tarde a la fiesta, pero hay otra opción para esto que evita tener 2 bases de datos.
Puede 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 puede usar cualquier herramienta postgis para usar directamente las tablas espaciales cargadas / editadas de ArcSDE, ya que de hecho son tablas nativas postgis.
Por ejemplo, puede usar qgis para conectarse directamente a la base de datos postgis y leer los mismos datos que arcgis a través de arcsde.
fuente
Otro enfoque sería utilizar un ETL espacial como Geokettle (código abierto).
http://www.spatialytics.org/projects/geokettle/
Uso Geokettle para mover datos entre el servidor SQL y PostGIS todo el tiempo. Sin embargo, si bien 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 del servidor sql, aplique .STAsText () al campo de geometría o Geokettle se ahogará con el tipo de datos del servidor sql.
Sugerencia 2: al insertar datos en el servidor sql, deberá 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 llenarla 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 una geometría OGC.
Sugerencia 3: asegúrese de registrar su nueva tabla espacial con SDE.
fuente
Considere configurar la replicación de la base de datos en el 9.3 db original.
No funciona tan bien como el nuevo 10, pero ...
replica eso en otro sde en postgresql usando el tipo de datos postgis pg_geometry.
Aquí hay ayuda de esri
NOTA: Esto requerirá licencias duplicadas si ambos dbs no están en la misma máquina
fuente
Podría escribir ArcObjects a:
A) volcar su base de datos arcsde; B) Código simple de C # para generar shp2pgsql sqls; C) Código simple de C # para volcar tablas viejas; D) C # simple para ejecutar todos los shp2pgsql en su postgresql;
Puede usar el controlador npgsql para lograr esto, ejecutando funciones y sentencias sql directamente en su base de datos postgis;
fuente
¿Cuál es su geometría ArcSDE ( almacenamiento de geodatabase en bases de datos relacionales )? En tal escenario, puede considerar usar el tipo ST_Geometry y luego usar las herramientas de replicación PostGre / PostGIS ( PostGIS Replication @ FOSS4G ). 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).
fuente