Processing math: 100%

4 votos

ogr2ogr / GDAL eliminar las características en FileGDB mientras está en uso por el servicio de mapas de ArcGIS Server

Estoy usando ogr2ogr para sacar características de Oracle y ponerlas en un Archivo GeoDatabase. La FGDB está siendo utilizada por un servicio de mapas activo de ArcGIS Server. Todo esto se hace para el rendimiento / reducir la carga de la DB. Los datos de la base de datos se actualizan cada noche y luego el proceso ogr2ogr se ejecuta para que no se preocupe por los registros de FGDB.

Los datos pueden crecer y reducirse de la noche a la mañana durante la actualización, por lo que necesito que mi FGDB se actualice tanto para eliminar como para añadir características.

Sé que esto es posible si utilizo el programa ogr2ogr's -overwrite opción, por ejemplo

ogr2ogr --config FGDB_BULK_LOAD YES -f "FileGDB" <path to>.gdb OCI:user/pass@SID -overwrite -nlt LINESTRING -a_srs EPSG:4326 -nln layer_name -sql "select * from src_table"

Pero -overwrite falla si no detengo primero el servicio de mapas de ArcGIS Server.

Puedo usar -update -append para actualizar los registros de FGDB mientras el servicio está en marcha, pero esto es "aditivo": se añaden registros pero no se elimina nada.

ogr2ogr --config FGDB_BULK_LOAD YES -f "FileGDB" <path to>.gdb OCI:user/pass@SID -update -append -nlt POINT -a_srs EPSG:4326 -nln layer_name -sql "select * from src_table"

Estoy buscando una manera de

  1. Truncar la capa FGDB sin eliminarla antes de un -update -append o
  2. Cambiar mi comando ogr2ogr para eliminar las características no extraídas de Oracle

También vi este puesto esta página sobre la detención / inicio de los servicios de mapas AGS mediante programación, pero la opción 1 o 2 es mi preferencia, ya que quiero un enfoque que no requiera autenticación / tokens a través de HTTP. Si es necesario puedo traer en Python y tal vez el módulo arcpy.

Cualquier aportación sobre parámetros de GDAL / ogr2ogr que no haya visto todavía y que pueda ayudar sería muy apreciada (o enfoques alternativos, por supuesto).

3voto

auramo Puntos 161

Es posible emitir sentencias SQL al controlador FileGDB, por ejemplo

ogrinfo -dialect FileGDB -sql "delete from <table_name>"

Consulte la nota "Soporte de SQL" en la página del controlador FGDB: http://gdal.org/ogr/drv_filegdb.html

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