Cómo identificar polígonos con errores de astilla "bandera"

12

Al trabajar en ArcMap, he encontrado errores en una capa de polígono que llamaré "astillas de bandera" (tomadas de un lenguaje similar en parcelas llamadas "lotes de bandera"). Estos polígonos astillados (ver imagen a continuación) generalmente están compuestos de un solo nodo adicional que el usuario ha agregado accidentalmente.

En las imágenes a continuación, la "bandera" y el "asta de la bandera" son una característica de una sola parte donde el "asta de la bandera" simplemente se superpone. La imagen de la izquierda tiene un total de 5 nodos.

bandera simple ingrese la descripción de la imagen aquí

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

Esto probablemente ocurre porque están usando un editor basado en archivos de forma y, por lo tanto, no puedo implementar ninguna regla de edición basada en topología para evitar que esto suceda en el futuro.

¿Alguien tiene una manera de identificar y resolver este tipo de errores? Preferiría un método automatizado de identificación y resolución ya que los usuarios de campo son los que crearon los errores, pero estoy atascado limpiando después de ellos. Gracias.

RyanKDalton
fuente
3
Me pregunto por qué Esri proporciona una regla de no intersección propia para entidades de línea, pero no para polígonos.
Kirk Kuykendall
¿La herramienta Verificar geometría los encuentra?
mkennedy
También busque en colgar y sobrepasar. Ambos trajeron algunos arcscripts, pero nada actual y muchos para polilíneas, en lugar de polígonos.
mkennedy
Ryan, ¿sería posible que proporciones un subconjunto de tus datos? Además, ¿investigó por casualidad el comentario de mkennedy sobre la herramienta "Verificar geometría"?
Allan Adair
¿Qué versión de arcmap?
Kirk Kuykendall

Respuestas:

5

si tiene acceso a las herramientas de Safe Fme, encontrará útil el transformador llamado spikeRemover, échele un vistazo. Puede probar una versión limitada descargable de SAFE FME o verificar su 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

Jorge Vidinha
fuente
Pude usar con éxito el SpikeRemover dentro de la extensión ArcGIS Data Interop para limpiar los picos. También tiene salidas que le permiten especificar características sin cambios, modificadas y marcadas (picos). Todo esto fue muy útil para identificar las características que tenían picos, y crear una nueva capa "sin picos" fue muy fácil simplemente publicando las salidas sin cambios y modificadas en la misma capa, y la salida "marcada" en una capa de CC para mayor inspección esri.com/software/arcgis/extensions/datainteroperability/…
RyanKDalton
2

No estoy seguro de dónde ocurre su problema, o dónde tiene la posibilidad de evitarlo / solucionarlo. Pero he visto esto mucho en nuestra base de datos SDE, aunque las geometrías en SDE siempre deben ser correctas. En nuestro caso fue porque importamos archivos de forma usando ArcObjects en el SDE. Cuando se almacenaron las geometrías, se ajustaron a la cuadrícula del SDE y, por lo tanto, crearon geometrías incorrectas con las astillas que describió cuando la geometría tenía una punta delgada. Esto se debe a que los archivos de forma tienen una precisión doble completa para las coordenadas y el SDE es una cuadrícula más gruesa.

Nuestra solución fue arreglar las geometrías cuando fueron importadas por:
1. Establezca la referencia espacial de la geometría del archivo de forma a la referencia espacial de la clase de entidad SDE correspondiente
2. Ajuste la geometría a la referencia espacial (IGeometry.SnapToSpatialReference () )
3. Establezca ITopologicalOperator2.IsKnownSimple = false (importante, de lo contrario, simplificar no hace nada)
4. Realice alguna operación de simplificación. Para los polígonos usamos IPolygon.SimplifyPreserveFromTo ()

Stefan
fuente
2

Con arcmap 9.3.1, agregaría un campo llamado Flag (o quizás FlagFlag?) Y usaría el código VBA en la calculadora de campo para calcular este campo.

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

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

Establezca el valor del campo Indicador en esriNonSimpleEnum . Presumiblemente, el error que le preocupa volvería esriNonSimpleSelfIntersections.

Con 10.0 puede haber una manera de hacer esto con Python en la calculadora (?) ... No estoy seguro. Usaría un comando de complemento. IMO Esri debería proporcionar soporte para c # en la calculadora de campo. Después de todo, el compilador de c # se instala como parte del marco .NET.

Actualizar

El código que publiqué aquí podría encontrar astas de bandera si aplica una expresión de definición "Left_OID" = "Right_OID"a la capa de características de polilínea resultante.

Kirk Kuykendall
fuente
1

Este script de Python es una herramienta útil

Eliminar los polígonos astillados de los archivos de forma

"EliminateSlivers.py realiza un ciclo a través de todas las funciones en un archivo de forma poligonal y elimina las del archivo de forma de salida que caen por debajo de un umbral de área determinada.

Las operaciones de geoprocesamiento y las tolerancias de agrupación podrían dar lugar a la acumulación de pequeños polígonos de astillas. Esto puede no tener sentido y podría distorsionar la fiabilidad de los datos espaciales ".

Nota: tendrá que probar con diferentes tolerancias con sus datos (primero tome una copia de sus datos)

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

Mapperz
fuente
1
Fue fácil con ArcInfo Coverage> Clean Arcs> Build
Polygons
No estoy seguro de que esta herramienta realmente elimine los errores que estoy representando. Verá, la astilla (asta de bandera) y el cuerpo principal del polígono (bandera) son en realidad una característica. Por lo tanto, esta secuencia de comandos SOLAMENTE no eliminaría la porción de "asta de bandera" del polígono sin eliminar toda la característica de "bandera" al mismo tiempo.
RyanKDalton
1

Ryan

Trabajé con la oficina de Soil Survey y revisé periódicamente sus polígonos de suelo. Lo que hago está marcado por astillas. Enviaría la clase de características a cobertura y luego las construiría en una etiqueta para identificar los errores. Si ve 2 etiquetas en un polígono, es un error. Si es una etiqueta por polígono, sabe que es correcta. Crearía una clase de entidad como un punto para marcar un error. O puede seleccionar una o varias etiquetas en una nueva clase de entidad. De esta manera, puede volver y corregir el error. Me funciona muy bien con los polígonos del suelo. Lo uso para informar a los científicos del suelo para solucionar el problema.

Esa es solo una forma de identificar el problema. Solo compartiendo eso contigo.

PROBERT
fuente
1

Si la identificación no es un punto importante y solo la solución automatizada, intente esto. Agregue los datos a un nuevo documento de mapa en blanco;

  • Crear una topología de mapa
  • seleccione todas las funciones
  • use las características de construcción para dividir las características existentes

He probado esto y parece funcionar, pero no estoy seguro de si he replicado exactamente su fuente de datos

Diviértete, CDB

CDBrown
fuente
1

Aquí vamos, hay algunas formas de resolver esto y, en mi opinión, la más elegante es usar una extensión llamada GIS Data Reviewer . El Revisor de datos SIG le permite crear comprobaciones personalizadas y simplificadas de la precisión espacial y de los atributos además de la topología central. Dentro de la topología hay cosas que no están disponibles que forman parte de las comprobaciones estándar para Me gusta del revisor de datos

  • Cierre 3D
  • Agujero inválido
  • Expresión SQL
  • Área menor que la referencia espacial
  • Característica en característica
  • y muchos más

Lo usaría para interrogar sus datos. Otra forma de hacerlo es crear una nueva clase de entidad basada en su clase de entidad poligonal existente. y luego cree una nueva clase de entidad Polígono y llénela con las líneas utilizando la herramienta de entidades de construcción en la Barra de herramientas de topología. Esto significaría que los slivers deberían mostrarse como tales y cualquier otra herramienta de topología debería detectar el error. Luego se trata de seleccionar, eliminar y reemplazar las entidades en la clase de entidad existente.

Espero que esto ayude, CDB

CDBrown
fuente