Saya mencoba untuk mengekstrak nilai istirahat alami dari raster menggunakan Python.
Proses yang dimaksud berjalan: Objek raster Arcpy ke NumPy Array (menggunakan RasterToNumPyArray ) ke nilai istirahat alami (menggunakan fungsi 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)
Kode ini mengembalikan kesalahan, "ValueError: matrix harus 2 dimensi".
Sejauh yang saya tahu, greenArray adalah array 2 dimensi.
flatten
danravel
; yangNatural_Breaks
tampaknya hanya menerima vektor 1d nilai (atau, sebuah(n, 1)
vektor).Jawaban:
Terima kasih atas bantuannya, Branco dan om_henners.
Jawaban untuk masalah saya tampaknya menggunakan numpy.ravel () untuk mengubah array yang dihasilkan oleh arcpy.RasterToNumPy () ke array 1D:
sumber