26 votos

¿Existe un error importante en las estadísticas zonales de ArcGIS?

Actualización: El error se ha corregido en la versión de ArcGIS 10.4

Estoy utilizando ArcGIS 10.2.2 para determinar las estadísticas zonales de una serie de zonas. Si hay algún NoData en el ráster de valores, quiero que los resultados zonales sean "NoData", precisamente como se anuncia en la descripción de las herramientas. Este descripción de la herramienta estados:

DATOS - Dentro de cualquier zona particular, sólo las celdas que tienen un valor en el ráster de valor de entrada se utilizarán para determinar el valor de salida para esa zona. Las celdas NoData en el ráster Value serán ignoradas en el cálculo de la estadística.

NODATA - Dentro de cualquier zona particular, si existe alguna celda NoData en el ráster de valores, se considera que no hay información suficiente para realizar cálculos estadísticos para todas las celdas de esa zona; Por lo tanto, toda la zona recibirá el valor NoData en el ráster de salida. de salida.

Por favor, eche un vistazo a mi configuración en esta imagen: enter image description here

Estoy utilizando la opción NODATA con un ráster de valor que tiene un píxel NoData, y por lo tanto espero que el valor de zona resultante (zona 61154) sea 'NoData'. En su lugar, obtengo un valor de 12,74 (redondeado a 13 en la imagen), lo que me confunde en dos niveles: En primer lugar, esperaba "NoData", y en segundo lugar, el valor resultante de 12,74 es matemáticamente imposible, porque la media no puede ser mayor que el valor máximo de la trama de valores, que es 10 en este caso.

Si utilizo la opción DATA, obtengo un valor de aproximadamente 9,1, lo que tiene sentido. Hemos probado esto en diferentes conjuntos de datos, ordenadores y versiones de ArcGIS.

¿Qué me estoy perdiendo aquí?

Edición / Comentario adicional: Acabo de darme cuenta de que el atributo 'Count' también está mal para esa zona en particular. En efecto, hay 421 celdas en esa zona, pero la herramienta sólo ha contado 297. Calculando 421 menos 297 el resultado es 124 - curiosamente, esta es la "posición" en la que se encuentra el píxel NoData, si se cuentan los píxeles desde la parte superior izquierda a la inferior derecha de la zona. Es posible que la herramienta se equivoque en el recuento de celdas (demasiado bajo), lo que podría explicar el aumento de la media.

Edición: Aquí hay un enlace a los datos Estoy usando.

Editar: Dan Patterson y yo hicimos una depuración adicional aquí en el foro de ESRI.

1 votos

Sí, produce una locura. En mi caso MEAN=537 para la trama en el rango (16,86). No tiene gracia

0 votos

¿Qué valor se utiliza para representar NoData en este raster?

0 votos

@Jezibelle: Buena pregunta, ¿dónde puedo encontrar una respuesta fiable? Si exporto como Ascii, es -9999. Si utilizo la función de exportación del menú contextual, el campo "NoData as:" del diálogo de exportación se rellena con 2147483647. ¿Esto hace que aparezca una bandera?

10voto

Spyros Puntos 56

Hay un error que parece corresponder a lo que estás experimentando - está registrado como BUG-000084883 - La opción 'Ignorar NoData en los cálculos' en la herramienta Estadísticas Zonales como Tabla {y en la herramienta Estadísticas Zonales} no se respeta cuando está marcada, produciendo resultados incorrectos.

Ocurre con la 10.3 y la 10.2.2 pero no con la 10.1. Has probado la herramienta con esta versión?

0 votos

Esto parece un buen enfoque, aunque personalmente no sé cómo ejecutar las versiones anteriores de la herramienta. ¿Alguien sabe dónde dirigirme para intentar esta solución?

0 votos

Gracias @GISGe. ¿Dónde has encontrado esto? ¿Hay algún enlace donde esté documentado este fallo?

1 votos

@G-wizard - He añadido el enlace en mi respuesta. Como personal internacional de Esri tengo acceso a una descripción más detallada de lo que puedes ver, así es como puedo decirte que el error también se aplica a la herramienta de Estadísticas Zonales y no se encuentra en 10.1.

9voto

FelixIP Puntos 4035

Es un error. Algo terriblemente malo con el conteo de células.

Correcto media (9,0452380952381) veces correcto número de celdas no vacías (420) dividido por 297 (es decir, un recuento de celdas comunicado por herramienta ) da como resultado 12,7912457912458. Se trata de un promedio erróneo reportado por la herramienta.

Resultados de mi propia prueba de rejillas de tamaño de juguete:

enter image description here

1 votos

Confirmo que tengo el mismo problema con 10.3 , NODATA y "MEAN"

0 votos

Gracias a ambos por confirmarlo. Pero dejando de lado las diferencias en el valor medio, ¿me equivoco al suponer que el resultado no debería ser ningún valor, sino "NODATA"? La descripción de la herramienta me hace pensar eso. Dice: "NODATA - Dentro de cualquier zona particular, si existe alguna celda NoData en el ráster de valores, se considera que no hay información suficiente para realizar cálculos estadísticos para todas las celdas de esa zona; por lo tanto, toda la zona recibirá el valor NoData en el ráster de salida." Dado que hay un píxel con "NODATA", las estadísticas de la zona también deberían ser "NODATA". ¿Es correcto?

2 votos

@G-wizard, estás en lo cierto, tal y como se indica en la descripción de la herramienta. Algo análogo a lo que ocurre con el #DIV/0! en Excel.

1voto

hernan43 Puntos 566

Similar a otra respuesta , mover los datos rasterizados a Matrices enmascaradas NumPy para calcular sus estadísticas. Suponiendo dos rásteres superpuestos con la misma forma, esto es simple:

import numpy as np
zones = arcpy.RasterToNumPyArray("zones")
value = np.ma.masked_equal(arcpy.RasterToNumPyArray("value"),
                           arcpy.Raster("value").noDataValue)
print("Zone\tCount\tNoData\tMean")
for z in np.unique(zones):
    sel = (zones == z)
    print z, sel.sum(), value.mask[sel].sum(), value[sel].mean()

Espectáculos:

Zone    Count   NoData  Mean
61131   53   0   8.92452830189
61154   421   1   9.04523809524
61207   1   0   8.0
61317   35   0   7.2
61644   644   0   7.90838509317
61677   12   0   7.41666666667
61789   7   0   9.0
61871   193   0   7.98445595855
187472   349   0   8.5787965616

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