ฉันกำลังพยายามดึงค่าตัวแบ่งตามธรรมชาติจากแรสเตอร์ด้วย Python
กระบวนการที่ต้องการไป: วัตถุ Arcpyไปยัง NumPy Array (โดยใช้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: matrix ต้องเป็น 2 มิติ"
เท่าที่ฉันรู้ greenArray เป็นอาร์เรย์ 2 มิติ
1
คุณได้ลองตรวจสอบมิติข้อมูลสีเขียวก่อนที่จะลองประมวลผลด้วย Natural_Breaks หรือไม่ ดูเหมือนว่าการโทร. รูปร่างบนอาเรย์จะทำให้คุณมีขนาดของอาเรย์ ฉันไม่ได้ทำสิ่งนี้มาก่อน แต่โพสต์นี้มีประโยชน์ ... stackoverflow.com/questions/3061761/numpy-array-dimensions
—
Branco
ขอบคุณ Branco ฉันเจอกระทู้นั้นซึ่งทำให้ฉันเชื่อว่าชุดของฉันเป็นแบบสองมิติ การกลับมาของ greenArray.shape = (1536,2048) และ greenArray.ndim = 2 ฉันคิดว่าฉันคิดวิธีแก้ปัญหา (ใช้ numpy.ravel ()) ซึ่งฉันจะเขียนเร็ว ๆ นี้
—
phloem
@phloem ดู PySAL docco ฉันคิดว่าคุณถูกต้องกับการใช้
—
om_henners
flatten
และravel
; Natural_Breaks
ดูเหมือนจะยอมรับเฉพาะเวกเตอร์ 1D ของค่า (หรือเป็น(n, 1)
เวกเตอร์)