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.
1
¿Has intentado comprobar las dimensiones de greenArray antes de intentar procesarlo con Natural_Breaks? Parece que llamar a .shape en la matriz te dará las dimensiones de la matriz. No he hecho nada de esto antes, pero esta publicación parece útil ... stackoverflow.com/questions/3061761/numpy-array-dimensions
—
Branco
Gracias Branco. Encontré ese hilo, lo que me llevó a creer que mi matriz era bidimensional. El regreso de greenArray.shape = (1536,2048) y greenArray.ndim = 2. Creo que he encontrado una solución (usando numpy.ravel ()), que escribiré en breve.
—
floema
@phloem Mirando el docco PySAL creo que tienes razón usando
—
om_henners
flatten
y ravel
; el Natural_Breaks
parece aceptar solamente un vector 1d de los valores (o, un (n, 1)
vector).