Я пытаюсь извлечь естественные значения разрыва из растра, используя Python.
Предполагаемый процесс: растровый объект Arcpy в массив NumPy (с использованием RasterToNumPyArray ) для естественных значений разрыва (с использованием функции 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)
Этот код возвращает ошибку «ValueError: матрица должна быть двухмерной».
Насколько я знаю, greenArray - это двумерный массив.
arcgis-desktop
arcpy
numpy
pysal
valueerror
флоэма
источник
источник
flatten
иravel
;Natural_Breaks
, кажется, принимает только 1d вектор значений (или просто(n, 1)
вектор).Ответы:
Спасибо за помощь, Бранко и om_henners.
Похоже, что ответом на мою проблему является использование numpy.ravel () для изменения массива, созданного arcpy.RasterToNumPy (), на одномерный массив:
источник