Estoy intentando extraer valores de corte naturales de un ráster usando Python.
El proceso previsto va: Objeto de trama Arcpy a NumPy Array (usando RasterToNumPyArray ) a valores de ruptura natural (usando la función PySAL Natural Breaks ).
import arcpy, pysal
from pysal.esda.mapclassify import Natural_Breaks as nb
# code to create greenIndex arcpy Raster object here
greenArray = arcpy.RasterToNumPyArray(greenIndex)
breaks = nb(greenArray,k=2,initial=20)
Este código devuelve el error "ValueError: la matriz debe ser bidimensional".
Hasta donde yo sé, greenArray es una matriz bidimensional.
flatten
yravel
; elNatural_Breaks
parece aceptar solamente un vector 1d de los valores (o, un(n, 1)
vector).Respuestas:
Gracias por la ayuda, Branco y om_henners.
La respuesta a mi problema parece ser usar numpy.ravel () para cambiar la matriz producida por arcpy.RasterToNumPy () a una matriz 1D:
fuente