Python kullanarak bir raster doğal mola değerleri ayıklamak çalışıyorum.
Amaçlanan işlem şu şekildedir : Arcpy raster nesnesini NumPy Array'a ( RasterToNumPyArray kullanarak ) doğal kesme değerlerine ( PySAL Natural Breaks işlevini kullanarak ).
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)
Bu kod "ValueError: matrix 2 boyutlu olmalıdır" hatasını döndürür.
Bildiğim kadarıyla greenArray 2 boyutlu bir dizidir.
1
Natural_Breaks ile işlemeden önce greenArray boyutlarını kontrol etmeyi denediniz mi? Dizide .shape çağırmak size dizi boyutlarını verecektir. Daha önce bunlardan hiçbirini yapmadım, ancak bu yazı faydalı görünüyor ... stackoverflow.com/questions/3061761/numpy-array-dimensions
—
Branco
Teşekkürler, Branco. Dizimin 2 boyutlu olduğuna inanmama neden olan bu iş parçacığına rastladım. GreenArray.shape = (1536,2048) ve greenArray.ndim = 2'nin dönüşü. Kısa bir süre içinde yazacağım bir çözüm (numpy.ravel () kullanarak) bulduğumu düşünüyorum.
—
phloem
Sana kullanarak yaptıkları anda düşünmek docco @phloem PySAL baktığımızda
—
om_henners
flatten
ve ravel
; Natural_Breaks
sadece 1d değerleri vektörü (ya da, bir kabul görünmektedir (n, 1)
vektörü).