Próbuję wyodrębnić naturalne wartości przerwania z rastra za pomocą Pythona.
Zamierzony proces idzie: Arcpy obiekt rastrowy do NumPy Array (przy użyciu RasterToNumPyArray ) do naturalnych wartości przerwania (przy użyciu funkcji 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)
Ten kod zwraca błąd „ValueError: matrix musi być dwuwymiarowy”.
O ile mi wiadomo, greenArray to tablica dwuwymiarowa.
flatten
iravel
;Natural_Breaks
wydaje się tylko zaakceptować 1d wektor wartości (lub, o(n, 1)
wektor).Odpowiedzi:
Dzięki za pomoc, Branco i om_henners.
Odpowiedzią na mój problem wydaje się być użycie numpy.ravel () do zmiany tablicy utworzonej przez arcpy.RasterToNumPy () na tablicę 1D:
źródło