¿Eliminar solo los agujeros de rosquilla de los polígonos con ArcGIS Desktop?

15

Estoy usando ArcGIS Desktop 10.0.

Tengo un truco para eliminar los agujeros de rosquilla, que es convertir el polígono en línea y luego crear un polígono a partir de las líneas y, al final, fusionarlas todas. El inconveniente de esta estrategia es que elimina otros agujeros y áreas vacías que en realidad están vacías y deben mantenerse vacías. Ver imagen a continuación:

ingrese la descripción de la imagen aquí

Arash
fuente
3
He votado para mantener esta pregunta abierta porque creo que el OP está tratando de eliminar algunas pero no todas las rosquillas. Está buscando una manera de conservar algunos de ellos.
Fezter
¡Gracias! He añadido la imagen, espero que aclare todo. No puedo seguir adelante y eliminar áreas más grandes antes de fusionar todo porque puedo eliminar accidentalmente los polígonos principales (el verde en sí).
Arash
1
Muy similar a ¿Cómo eliminar pequeños polígonos de "sal y pimienta" de una capa? , pero usando un proceso QGIS. Probablemente podría trabajar con procesos muy similares en ArcGIS.
RyanKDalton
Es solo el tamaño del umbral por encima del cual no se deben rellenar los agujeros lo que evita que esto sea un duplicado de Relleno en polígonos de Donut usando ArcGIS for Desktop.
PolyGeo

Respuestas:

23

Me gustaría probar la Unión herramienta con NO_GAPS:

NO_GAPS: se creará una función para las áreas en la salida que están completamente encerradas por polígonos. Esta característica tendrá atributos en blanco.

Luego puede seleccionar las características con atributos en blanco por debajo de un tamaño de umbral y calcular sus atributos para que sean los mismos que el polígono original, o copiarlos / pegarlos en la ventana Atributo del editor.

Las características con atributos en blanco por encima del tamaño del umbral deben eliminarse.

A partir de ahí, la herramienta Disolver debe completar el trabajo.

PolyGeo
fuente
1
¿Cómo "calcula [el nuevo donut poly] para que sea el mismo que el polígono original [que contiene]"? No tienen valores de atributos en común, por lo que no se pueden unir. ¿Cómo sabe Island poly C que debería adquirir sus nuevos valores de atributo de (que contiene) Lake poly A e ignorar (en otro lugar) Lake poly B?
Matt wilkie
No he hecho una prueba reciente pero "el nuevo donut poly" es el "polígono original [que contiene]". Si hay múltiples polígonos de donas para procesar a granel, entonces sería necesario etiquetar los pequeños agujeros con el polígono de donas en el que caen.
PolyGeo
7

La solución de PolyGeo es una que he empleado yo mismo y funciona bien (+1). Otra alternativa es amortiguar sus polígonos en una pequeña cantidad y luego eliminar el búfer del resultado en la misma cantidad (digamos + 1m y luego -1m). Esto también funciona bien, pero conlleva un pequeño riesgo de unir accidentalmente polígonos vecinos que se encuentran en la misma cantidad que el búfer. También puede aumentar su conteo de vértices (lo que puede o no ser un problema).

También puede escribir un script para una solución robusta iterando sobre cada polígono, creando polígonos temporales basados ​​en los anillos interiores y probándolos para sus áreas. Si están por debajo de tu umbral, entonces eliminas ese anillo interior de la geometría y actualizas tu fila. Esta solución es más trabajo que la solución de PolyGeo o el hackeo de mi buffer anterior, pero posiblemente sea un enfoque "más puro".

MappaGnosis
fuente
5

Puede usar la herramienta "Eliminar parte de polígono" (Herramientas de administración de datos -> Generalización) en ArcToolbox. Puede especificar el área / porcentaje de agujero mínimo para eliminar.

Kadir Şahbaz
fuente
1
Sin embargo, esta función requiere un nivel de licencia avanzado / ArcInfo.
Martin
Probé la herramienta Eliminar parte de polígono, en ArcGIS Pro 2.0. Pero no hizo nada a la función de polígono que estaba probando. La característica tenía varios anillos interiores, y quiero que todos se hayan ido. ¿Esta herramienta solo funciona si la entidad consiste en geometría multiparte?
Mike Finch
No solo". Funciona también polígonos individuales con agujero (s), también.
Kadir Şahbaz
4

Aquí hay otra forma de eliminar lagos de polígonos (como la capa del mapa de código postal de Navteq). Esto también es útil para limpiar las capas del mapa del territorio que se han generado al disolver la capa del mapa del código postal mediante el código del territorio.

  1. Use una "Unión" de geoprocesamiento en la capa del mapa de polígonos y elimine la casilla de verificación "Gaps Permitidos" (que está marcada de forma predeterminada). Esto crea polígonos para todos los agujeros de "rosquilla" en los polígonos.
  2. En la capa de mapa de Unión resultante, agregue campos para ID, X e Y. La ID debe estar separada del nombre / ID de los polígonos que tienen los agujeros de rosquilla que desea eliminar.
  3. En la tabla de atributos, use la Calculadora de campo para calcular la ID del campo ObjectID y use "Calcular geometría" para completar los valores X e Y.
  4. Separe los polígonos de rosquilla de los otros polígonos seleccionando (Seleccionar por atributos) aquellos en los que el campo de nombre es nulo.
  5. Exporte los registros seleccionados a una nueva tabla. (menú desplegable de opciones de tabla -> Exportar ...)
  6. Use la opción "Agregar XY" para crear una capa de evento. (capa de clic derecho -> Mostrar datos XY ...
  7. Exporte la capa de eventos a una nueva clase de entidad. (haga clic derecho en la capa -> Datos -> Exportar datos)
  8. Haga una unión espacial entre la nueva capa de puntos y la capa de mapa de polígonos ORIGINAL que no tiene los polígonos de anillos. Use la opción "más cercana" para que el nombre del polígono circundante se agregue a la tabla de atributos de los polígonos de donas.
  9. Utilice una unión de tabla estándar entre la capa de puntos unidos y la capa de mapa resultante de la Unión (en función del campo ID). (haga clic con el botón derecho en la capa -> Uniones y relaciones -> Unir -> Unir datos de otra capa según la ubicación espacial)
  10. Use la Calculadora de campo en la tabla de atributos para calcular los nombres de polígono nulos de la capa de puntos unidos.
  11. Ejecute una "Disolución" de geoprocesamiento basada en el nombre del polígono para fusionar los polígonos de rosquilla con el polígono con nombre más grande.

Tenga en cuenta que esto no corregirá el problema de los ríos que se cortan en el contorno del polígono, pero sí mejora la capa del mapa original al eliminar los agujeros internos de la rosquilla.

Susan
fuente
3

Si los polígonos en la clase de entidad contienen otros polígonos en la misma clase de entidad (ej. Lesotho dentro de Sudáfrica) y si necesita eliminar la edición manual en favor de ModelBuilder, etc., usar "Eliminar parte de polígono" es la solución más rápida. Configuraciones de herramientas:

- "Condición (opcional)" = ÁREA - "Área (opcional)" = un número muy grande (digamos, 1e + 100) - "Eliminar solo las partes contenidas (opcional)" = [marcado]

Esto producirá una Sudáfrica que tiene el área de Lesotho rellenada, esencial para los flujos de trabajo, como la salida de vértices para su uso en imágenes poligonales en Tableau.

Arrojar
fuente
0

Como no se ha mencionado hasta ahora y parece ser la herramienta correcta para lo que está tratando de lograr exactamente: Polígonos agregados

Establezca el valor mínimo de agujero en el tamaño mínimo de un agujero de polígono que desea mantener. Los más pequeños serán eliminados.

El valor mínimo_área opcional en la misma herramienta hace lo mismo para las partes del polígono que no son agujeros.

ZZZ
fuente