12 votos

Cómo identificar polígonos con errores de "bandera" (flag)

Trabajando en ArcMap, me he encontrado con errores en una capa de polígonos que llamaré "desperdicios de bandera" (tomado de un lenguaje similar en parcelas llamadas "lotes de bandera"). Estos polígonos de desperdicio (ver imagen abajo) están típicamente compuestos de solo un nodo adicional que el usuario ha añadido accidentalmente.

En las imágenes abajo, la "bandera" y el "asta de la bandera" son características de una sola parte donde el "asta de la bandera" se superpone a sí misma. La imagen de la izquierda tiene un total de 5 nodos.

simple flag enter image description here

Cuando se ven solos, los errores son muy obvios, pero cuando múltiples polígonos son adyacentes, son casi imposibles de ver porque aparentan ser el límite entre 2 polígonos.

Esto probablemente sucede porque están usando un editor basado en shapefile, y por lo tanto no puedo implementar reglas de edición basadas en topología para evitar que esto suceda en el futuro.

¿Alguien tiene una forma de identificar y resolver estos tipos de errores? Preferiría un método automatizado tanto para la identificación como para la resolución, ya que los usuarios en campo son quienes crearon los errores, pero me encuentro limpiando después de ellos. Gracias.

3 votos

Me pregunto por qué Esri ofrece una regla de no-autointersección para entidades de línea, pero no para polígonos.

0 votos

¿La herramienta de Verificar geometría los encuentra?

0 votos

También busca en dangle y overshoot. Ambos mostraron algunos arcscripts, pero nada actual y muchos para polilíneas en lugar de polígonos.

5voto

Seb Nilsson Puntos 8619

Si tienes acceso a las herramientas Safe FME, encontrarás útil el transformador llamado spikeRemover, échale un vistazo. Puedes probar una versión descargable limitada de SAFE FME o verificar tu licencia de ArcGis para "FME Extension for ArcGIS"

http://docs.safe.com/fme/html/FME_Transformers/Default.htm#Transformers/spikeremover.htm

http://cdn.safe.com/resources/fme/FME-Transformer-Reference-Guide.pdf

0 votos

Pude utilizar con éxito el SpikeRemover dentro de la extensión ArcGIS Data Interoperability para limpiar los picos. También tiene salidas que te permiten especificar elementos no cambiados, cambiados y marcados (picos). Todo esto resultó muy útil para identificar las características que tenían picos, y crear una nueva capa "sin picos" fue muy fácil simplemente publicando tanto las salidas no cambiadas como las cambiadas en la misma capa, y la salida "marcada" en una capa de control de calidad para una inspección posterior. esri.com/software/arcgis/extensions/datainteroperability/…

2voto

saint_groceon Puntos 2696

Con ArcMap 9.3.1, agregaría un campo llamado Flag (¿o tal vez FlagFlag?) y usaría código VBA en la calculadora de campos para calcular este campo.

El código VBA declararía una variable como ITopologicalOperator3 y la establecería en el campo Forma.

Luego llamaría al método IsSimpleEx no tan simple.

Establecería el valor del campo Flag en el esriNonSimpleEnum. Presumiblemente, el error con el que estás preocupado devolvería esriNonSimpleSelfIntersections.

Con la versión 10.0 puede que haya una forma de hacer esto con Python en la calculadora (?) ... No estoy seguro. Yo usaría un comando de complemento. En mi opinión, Esri debería proporcionar soporte para c# en la calculadora de campos. Después de todo, el compilador de c# está instalado como parte del framework .NET.

Actualización

El código que publiqué aquí podría encontrar mástiles de bandera si aplicas una expresión de definición "Left_OID" = "Right_OID" a la capa de entidades de polilínea resultante.

2voto

tgmdbm Puntos 1115

No estoy seguro de dónde ocurre tu problema, o dónde tienes la posibilidad de evitar/arreglarlo. Pero he visto esto muchas veces en nuestra base de datos SDE aunque las geometrías en SDE siempre deberían ser correctas. En nuestro caso, fue porque importamos shapefiles usando ArcObjects en el SDE. Cuando las geometrías se almacenaron, se ajustaron a la cuadrícula del SDE y así se crearon geometrías incorrectas con las ranuras que describes cuando la geometría tenía un pico delgado. Esto se debe a que los shapefiles tienen precisión doble completa para las coordenadas y el SDE una cuadrícula más gruesa.

Nuestra solución fue arreglar las geometrías cuando se importaron mediante:
1. Establecer la referencia espacial de la geometría del shapefile a la referencia espacial de la clase de entidad SDE correspondiente
2. Ajustar la geometría a la referencia espacial (IGeometry.SnapToSpatialReference())
3. Establecer ITopologicalOperator2.IsKnownSimple=false (importante, de lo contrario, la simplificación no hace nada)
4. Realizar alguna operación de simplificación. Para polígonos, usamos IPolygon.SimplifyPreserveFromTo()

1voto

Erik Öjebo Puntos 6937

Este Script de Python es una herramienta útil

Eliminar polígonos delgados de shapefiles

"EliminateSlivers.py recorre todas las entidades en un shapefile de polígonos y elimina aquellas del shapefile de salida que caen por debajo de un umbral de área dado.

Operaciones de geoprocesamiento y tolerancias de agrupamiento podrían resultar en la acumulación de polígonos delgados adicionales y pequeños. Estos pueden ser irrelevantes y podrían distorsionar la fiabilidad de los datos espaciales."

Nota: tendrás que probar con diferentes tolerancias con tus datos (haz una copia de tus datos primero)

http://arcscripts.esri.com/details.asp?dbid=14672

1 votos

Fue fácil con ArcInfo Coverages > Limpiar Arcos > Construir Polígonos....

0 votos

No estoy seguro de que esta herramienta realmente elimine los errores que estoy describiendo. Verás, la asta (astil) y el cuerpo principal del polígono (bandera) son en realidad una sola característica. Por lo tanto, este script NO solo eliminaría la porción de la "asta" del polígono sin eliminar toda la característica de la "bandera" al mismo tiempo.

1voto

mcintyre321 Puntos 5393

Ryan,

Trabajé con la oficina de Estudio de Suelos y periódicamente revisaba sus polígonos de suelo. Lo que hago es revisar los deslizamientos. Enviaba la clase de características a la cobertura y luego construía etiquetas para identificar los errores. Si ves 2 etiquetas en un polígono, es un error. Si es una etiqueta por polígono, sabes que está correcto. Crearía una clase de características como punto para marcar un error. O puedes seleccionar una o muchas etiquetas en una nueva clase de características. De esta manera puedes volver y corregir el error. Funciona muy bien para mí con los polígonos de suelo. Utilizo eso para informar a los científicos del suelo para que arreglen el problema.

Esa es solo mi forma de identificar el problema. Solo comparto eso contigo.

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