¿Contando y rastrillando superposiciones de polígonos en ArcGIS Desktop?
17
¿Cómo se toma una capa vectorial con polígonos superpuestos y se convierte en un ráster donde cada celda cuenta el número de polígonos que contienen esa celda?
Estamos observando los polígonos de las áreas de quema de incendios entre 1976 y 2000 y queremos ver cuántos incendios se contendrían en cada celda de trama.
Haga esto en tres pasos: divida los polígonos en sus partes componentes, cuente las superposiciones y conviértalos en ráster. Esto evita el costo computacional potencialmente enorme de convertir por separado cada polígono en un ráster y combinar esos rásteres.
Union(en el Geoprocessingmenú) divide los polígonos en sus partes.
Desafortunadamente, cada superposición se duplica en la salida: tiene una copia idéntica para cada polígono original que la cubre. Por lo tanto
Dissolve(de nuevo en el Geoprocessingmenú) fusionará partes superpuestas, siempre que pueda encontrar una manera de identificarlas de forma exclusiva. Lea el cuadro de diálogo: hacia el final, tendrá una opción para calcular "estadísticas". Elija cualquier campo que pueda haber identificado los polígonos originales y solicite un recuento.
En muchos casos, la combinación del área del polígono y el perímetro identificará de manera única las partes. De lo contrario, puede agregar más propiedades geométricas en campos adicionales, como las coordenadas del centroide, hasta que haya acumulado suficiente información para distinguir cada entidad.
La capa resultante tiene una característica para cada superposición de polígono y algún tipo de campo "contar" que cuenta el número de superposiciones.
Convierta eso en un ráster, utilizando el campo "contar" para los atributos.
Por ejemplo, aquí hay algunos polígonos superpuestos y sus identificadores con la tabla de atributos que se muestra:
Después del segundo paso, tenemos un registro para cada región superpuesta junto con un recuento que ya se puede usar para simbolizar la cantidad de superposición:
El resto es fácil - y que es sólo una sola operación de rasterización.
Este método vectorial también funciona muy bien, excepto cuando se aplica a cientos de miles de polígonos con muchas superposiciones en una computadora con memoria limitada ...
ccn
@ccn Cuando haya más polígonos de los que ArcGIS puede manejar, divida el conjunto de datos en partes que pueda procesar. El resultado serán varios rásteres, pero no miles o millones de ellos, que luego son fáciles de sumar. Otra ventaja de usar Uniones que con casi el mismo flujo de trabajo puede abordar la situación en la que los polígonos residen en múltiples conjuntos de datos (que generalmente es un mal diseño de la base de datos pero desafortunadamente común): uno simplemente une todos los conjuntos de datos de entrada a la vez.
whuber
@ccn (Continuación) el punto que menciona se reduce a esto: ¿cuándo es mejor rasterizar los polígonos y usar operaciones de trama para fusionarlos en comparación con el uso de operaciones vectoriales ( union) seguidas de rasterización? Las operaciones vectoriales se empantanarán cuando las características se digitalicen con más detalles de los necesarios, dándoles demasiados vértices. En estas circunstancias extremas, el enfoque de trama podría ser mejor (aunque primero simplificar los polígonos podría ser una opción superior). Sin embargo, en todas las demás situaciones, rasterizar cada polígono por separado es una gran pérdida de tiempo humano y de computadora .
whuber
1
+1 para una solución basada en vectores. Para poner las cosas en perspectiva aquí, grabar datos del perímetro nunca es muy grande. Por ejemplo, todo el conjunto de datos del perímetro de quemado MTBS (EE. UU., Incluido Alaska) para 1984 - 2010 contiene ~ 19000 polígonos. Un enfoque basado en vectores o ráster funcionará bien.
Aaron
@ Aaron Gracias por la perspectiva. Para hacer los Estados Unidos a la vez con cualquier resolución razonable (por ejemplo, 100 m), necesitaría, por ejemplo, una trama de 50000 columnas y 30000 filas que contienen 1,500,000,000 celdas. Generar 19,000 de estos rásteres, incluso teniendo en cuenta la compresión incorporada, y luego realizar 19,000 * 1500000000 = aproximadamente 30000 mil millones de adiciones, ¡requeriría bastante tiempo! Si, por el contrario, cada polígono utiliza, por ejemplo, 100 vértices (que es muy detallado), la unión implica 1.900.000 vértices y es una operación O (n log (n)); en principio (pero no en ArcGIS :-) que lleva menos de 1 segundo.
Para este enfoque ráster computacionalmente rápido y simple, necesitará (1) separar los polígonos superpuestos en capas separadas (presumiblemente por año para los polígonos de fuego) usando Seleccionar por atributos en ModelBuilder con un iterador o una herramienta de script, (2) convertir cada Polígono a ráster con la asignación de celda MAXIMUM_COMBINED_AREA (asegurando el mismo tamaño de celda , ráster de ajuste y que la extensión sigue siendo la misma que el conjunto completo de polígonos), usando un valor de campo constante (por ejemplo, use el campo del año o las filas que tienen todos los 1) para convertir (use nuevamente ModelBuilder con un iterador o script de Python para ayudar a automatizar), y luego (3) aplique la siguiente herramienta de Spatial Analyst: Estadísticas de celda - utilice la VARIEDAD estadísticas_tipo si cada ráster tiene un valor único, como el año o SUMA si todos los valores de celda de los rásteres son 1s, asegúrese de marcar para ignorar NoData.
Los rásteres intermedios (de la conversión anterior) se pueden eliminar o están listos para usarse en análisis de ráster posteriores.
Union
es que con casi el mismo flujo de trabajo puede abordar la situación en la que los polígonos residen en múltiples conjuntos de datos (que generalmente es un mal diseño de la base de datos pero desafortunadamente común): uno simplemente une todos los conjuntos de datos de entrada a la vez.union
) seguidas de rasterización? Las operaciones vectoriales se empantanarán cuando las características se digitalicen con más detalles de los necesarios, dándoles demasiados vértices. En estas circunstancias extremas, el enfoque de trama podría ser mejor (aunque primero simplificar los polígonos podría ser una opción superior). Sin embargo, en todas las demás situaciones, rasterizar cada polígono por separado es una gran pérdida de tiempo humano y de computadora .La siguiente publicación tiene una pregunta algo similar que podría encontrar una solución relacionada: ¿ Crear una superficie de trama de superposiciones a partir de archivos de formas de polígonos vectoriales? .
Para este enfoque ráster computacionalmente rápido y simple, necesitará (1) separar los polígonos superpuestos en capas separadas (presumiblemente por año para los polígonos de fuego) usando Seleccionar por atributos en ModelBuilder con un iterador o una herramienta de script, (2) convertir cada Polígono a ráster con la asignación de celda MAXIMUM_COMBINED_AREA (asegurando el mismo tamaño de celda , ráster de ajuste y que la extensión sigue siendo la misma que el conjunto completo de polígonos), usando un valor de campo constante (por ejemplo, use el campo del año o las filas que tienen todos los 1) para convertir (use nuevamente ModelBuilder con un iterador o script de Python para ayudar a automatizar), y luego (3) aplique la siguiente herramienta de Spatial Analyst: Estadísticas de celda - utilice la VARIEDAD estadísticas_tipo si cada ráster tiene un valor único, como el año o SUMA si todos los valores de celda de los rásteres son 1s, asegúrese de marcar para ignorar NoData.
Los rásteres intermedios (de la conversión anterior) se pueden eliminar o están listos para usarse en análisis de ráster posteriores.
fuente