4 votos

las ediciones de la tabla de atributos en qgis no se muestran en arcgis

He recibido un archivo de puntos que fue hecho en QGIS. si una fila es borrada en QGIS aparece como borrada, en QGIS. Si importo ese archivo shp a arcgis el atributo sigue mostrando las filas que fueron borradas en QGIS. Si luego exporto el archivo shp en arcgis y lo importo a QGIS, aparecen todas las filas - es como si no se hubiera borrado nada. ¿Alguien más ha experimentado esto? Estoy usando la versión 2.10.1-Pisa

7voto

Joe Puntos 16

El motivo de su problema está en cómo el controlador GDAL Shapefile http://www.gdal.org/drv_shapefile.html borra las características del shapefile

El controlador de archivos shape de OGR soporta la reescritura de formas existentes en un shapefile, así como la eliminación de formas. Las formas eliminadas se marcan para en el archivo .dbf, y luego son ignoradas por OGR. Para eliminarlas permanentemente (dando lugar a la renumeración de los FID) invocar el SQL 'REPACK ' a través del método ExecuteSQL() de la fuente de datos.

Este es un truco práctico para mejorar el rendimiento: en lugar de eliminar la línea de .shp, .shx y .dbf, y reescribir los tres archivos, lo que puede ser grande, GDAL sólo actualiza una fila en el archivo .dbf. Cuando GDAL abre los datos lee la línea borrada que todavía está físicamente en .shp y .shx pero la descarta después de notar la bandera "borrada" en .dbf. Todo va bien hasta ahora y, como se demostró más tarde, el código nativo de ESRI utiliza el mismo truco.

Sin embargo, tu descripción demuestra que a ArcGIS no le importa la bandera de "borrado" del archivo .dbf, y cuando vuelve a guardar el shapefile se elimina la bandera. Como resultado, las características eliminadas están allí de nuevo para los programas basados en GDAL.

Entonces, ¿quién lo hace mal? Es difícil de decir. La especificación del Shapefile http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf define:

La tabla debe contener un registro por característica de forma

Algunos pueden decir que el archivo .dbf que tiene registros con banderas de borrado tiene más registros. Sin embargo, esa es la forma normal de borrar registros de dBase y por una razón obvia. También este viejo correo de 2007 http://forums.esri.com/Thread.asp?c=9&f=1193&t=218145 sugiere que al menos MapObjects, que es un producto de ESRI, sabe omitir esos registros "borrados por bandera".

He mirado en el javadoc y he encontrado el método delRecord(index): "Más concretamente, el registro se marca como eliminado. Aunque esto no elimina el registro del archivo, el registro se considerará considerado eliminado por todos los métodos getRecord(). " o "Este método NO elimina físicamente el registro del archivo. "

Sin embargo, a pesar de la información del javadoc parece que al menos su versión de ArcGIS no descarta los registros eliminados.

Lo más seguro es "reempaquetar" todo el shapefile y eliminar permanentemente las características borradas de todas las partes del shp. En código GDAL lo hace con REPACK y ESRI probablemente con "Pack", ver https://geonet.esri.com/thread/18661

¿Está seguro de que el registro no se ha borrado? Recuerde que la eliminación de un un registro en un archivo de base de datos normalmente sólo marca el registro para su eliminación y no lo borra realmente. Para ello debe hacer un:

aRecordset.Pack

después de la actualización

Una solución para usted es guardar su archivo shape de QGIS en un nuevo archivo shape, ya sea con QGIS o con la utilidad GDAL ogr2ogr http://www.gdal.org/ogr2ogr.html .

Más información en los comentarios de este ticket de QGIS https://hub.qgis.org/issues/11007

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