ข้อผิดพลาดที่สำคัญในสถิติ ArcGIS Zonal?


25

อัปเดต: ข้อผิดพลาดได้รับการแก้ไขในรุ่น ArcGIS 10.4

ฉันใช้ ArcGIS 10.2.2 เพื่อกำหนดสถิติโซนสำหรับจำนวนของโซน หากไม่มี NoData ใด ๆ ในค่าแรสเตอร์ฉันต้องการให้ผลลัพธ์ของโซนเป็น "NoData" อย่างแม่นยำตามที่โฆษณาโดยคำอธิบายเครื่องมือ สถานะคำอธิบายเครื่องมือนี้:

ข้อมูล - ภายในโซนใด ๆ เฉพาะเซลล์ที่มีค่าในแรสเตอร์มูลค่าการป้อนข้อมูลจะถูกใช้ในการกำหนดมูลค่าส่งออกสำหรับโซน เซลล์ NoData ใน Value raster จะถูกละเว้นในการคำนวณสถิติ

NODATA - ภายในโซนใด ๆ หากมีเซลล์ NoData อยู่ใน Value raster จะถือว่ามีข้อมูลไม่เพียงพอที่จะทำการคำนวณทางสถิติสำหรับเซลล์ทั้งหมดในโซนนั้น ดังนั้นทั้งโซนจะได้รับค่า NoData บนเอาท์พุทแรสเตอร์

โปรดดูการตั้งค่าของฉันในภาพนี้: ป้อนคำอธิบายรูปภาพที่นี่

ฉันกำลังใช้ตัวเลือก NODATA กับค่าแรสเตอร์ที่มีหนึ่งพิกเซล NoData และดังนั้นจึงคาดว่าค่าโซนผลลัพธ์ (โซน 61154) จะเป็น 'NoData' แต่ฉันได้ค่า 12.74 (ปัดเป็น 13 ในภาพ) ซึ่งทำให้ฉันสับสนในสองระดับ: ก่อนอื่นฉันคาดว่า 'NoData' และที่สองค่าผลลัพธ์ของ 12.74 นั้นเป็นไปไม่ได้ทางคณิตศาสตร์เพราะค่าเฉลี่ยไม่สามารถใหญ่ขึ้นได้ สูงกว่าค่าสูงสุดในค่าแรสเตอร์ซึ่งเท่ากับ 10 ในกรณีนี้

หากฉันใช้ตัวเลือก DATA ฉันจะได้รับค่าประมาณ 9.1 ซึ่งสมเหตุสมผล เราทดสอบสิ่งนี้กับชุดข้อมูลคอมพิวเตอร์และรุ่น ArcGIS ที่แตกต่างกัน

สิ่งที่ฉันหายไปที่นี่?

แก้ไข / แสดงความคิดเห็นเพิ่มเติม: ฉันเพิ่งสังเกตเห็นว่าคุณลักษณะ 'นับ' นั้นไม่ถูกต้องสำหรับโซนนั้น มีเซลล์ 421 เซลล์ในโซนนั้น แต่เครื่องมือนับ 297 เท่านั้นการคำนวณ 421 ลบ 297 ผลลัพธ์ใน 124 - แปลกพอนี่คือ "ตำแหน่ง" ที่มีพิกเซล NoData ตั้งอยู่หากนับจำนวนพิกเซลจากซ้ายบนถึงล่าง อยู่ในโซน เครื่องมืออาจทำให้เซลล์นับผิด (ต่ำเกินไป) ซึ่งอาจอธิบายการเพิ่มขึ้นของค่าเฉลี่ย

แก้ไข: นี่คือลิงค์ไปยังข้อมูลที่ฉันใช้

แก้ไข: Dan Patterson และฉันทำการดีบักเพิ่มเติมที่นี่ที่ฟอรัม ESRI


1
ใช่มันสร้างสิ่งที่บ้า ในกรณีของฉัน MEAN = 537 สำหรับ raster อยู่ในช่วง (16,86) ไม่ใช่เรื่องตลก
FelixIP

ค่าใดที่ใช้แทน NoData ในแรสเตอร์นี้
Jezibelle

@Jezibelle: คำถามที่ดีฉันจะหาคำตอบที่เชื่อถือได้ที่ไหน ถ้าฉันส่งออกเป็น Ascii มันคือ -9999 หากฉันใช้ฟังก์ชั่นการส่งออกจากเมนูบริบทฟิลด์ "NoData as:" - ของกล่องโต้ตอบการส่งออกจะได้รับการเติมด้วย 2147483647
G-wizard

มันจะปรากฏขึ้นเป็นแถวในตารางแอตทริบิวต์
Jezibelle

1
ฉันแก้ไขอีกครั้งในตอนท้ายของโพสต์ซึ่งฉันเชื่อมโยงไปยังโพสต์ที่คล้ายกันที่ฟอรัม ESRI ยืนยันข้อผิดพลาด (พร้อมการบิด) การคำนวณ "MEAN" จะให้ผลลัพธ์ที่แตกต่าง / แย่กว่าการคำนวณสถิติ "ALL" เท่านั้น
G-wizard

คำตอบ:


9

มีข้อผิดพลาดที่ดูเหมือนจะสอดคล้องกับสิ่งที่คุณกำลังประสบอยู่ - มีการลงทะเบียนเป็นBUG-000084883 - ตัวเลือก 'เพิกเฉย NoData ในการคำนวณ' ใน Zonal Statistics เป็นเครื่องมือในตาราง {และเครื่องมือ Zonal Statistics} ไม่ได้รับเกียรติเมื่อทำเครื่องหมายปิด ผลลัพธ์ไม่ถูกต้อง

มันเกิดขึ้นกับ 10.3 และ 10.2.2 แต่ไม่ใช่ 10.1 คุณลองใช้เครื่องมือกับรุ่นนี้หรือไม่?


ฟังดูเหมือนเป็นวิธีที่ดีแม้ว่าโดยส่วนตัวแล้วฉันจะไม่รู้วิธีเรียกใช้เครื่องมือรุ่นเก่ากว่า มีใครรู้บ้างว่าจะชี้ให้ฉันลองทำสิ่งนี้ได้ไหม?
UdderlyAstray

ขอบคุณ @GISGe คุณพบสิ่งนี้ที่ไหน มีลิงก์ที่บันทึกข้อผิดพลาดนี้หรือไม่
G-wizard

1
@ G-wizard - ฉันได้เพิ่มลิงค์ในคำตอบของฉัน ในฐานะพนักงานต่างชาติของ Esri ฉันสามารถเข้าถึงคำอธิบายโดยละเอียดมากกว่าสิ่งที่คุณเห็นนั่นคือวิธีที่ฉันสามารถบอกคุณได้ว่าข้อผิดพลาดนี้ยังนำไปใช้กับเครื่องมือสถิติ Zonal และไม่พบใน 10.1
GISGe

@UdderlyAstray - หากคุณต้องการเรียกใช้เครื่องมือรุ่นเก่ากว่านี้คุณต้องติดตั้ง ArcGIS รุ่นเก่ากว่านั้น
GISGe

1
ขอขอบคุณอีกครั้ง @GISGe เนื่องจากนี่คือสิ่งที่ฉันกำลังมองหา (ข้อผิดพลาดได้รับการยืนยันอย่างเป็นทางการ) ฉันจึงทำเครื่องหมายคำตอบนี้ว่าเป็นคำตอบที่ถูกต้องแม้ว่าคนอื่นจะยืนยันด้วยการทำแบบทดสอบ
G-wizard

9

มันเป็นข้อผิดพลาด มีบางอย่างผิดปกติอย่างมากกับจำนวนเซลล์

ค่าเฉลี่ยที่ถูกต้อง (9.0452380952381) คูณจำนวนเซลล์ที่ไม่ว่างเปล่าที่ถูกต้อง (420) หารด้วย 297 (นั่นคือจำนวนเซลล์ที่รายงานโดยเครื่องมือ ) ให้ผลลัพธ์เป็น 12.7912457912458 นั่นเป็นค่าเฉลี่ยที่รายงานผิดโดยเครื่องมือ

ผลการทดสอบขนาดกริดของเล่นของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่


1
ฉันยืนยันว่าฉันมีปัญหาเดียวกันกับ 10.3 NODATA และ "MEAN"
radouxju

ขอบคุณทั้งคู่ที่ยืนยันเรื่องนี้ แต่ความแตกต่างของค่าเฉลี่ยฉันคิดผิดว่าผลลัพธ์ไม่ควรมีค่าใด ๆ แต่เป็น 'NODATA' คำอธิบายของเครื่องมือทำให้ฉันเชื่ออย่างนั้น กล่าวว่า: "NODATA - ภายในโซนใด ๆ หากมีเซลล์ NoData อยู่ใน Value raster จะถือว่ามีข้อมูลไม่เพียงพอที่จะทำการคำนวณเชิงสถิติสำหรับเซลล์ทั้งหมดในโซนนั้นดังนั้นทั้งโซนจะได้รับค่า NoData บนเอาท์พุทแรสเตอร์ " เนื่องจากมีหนึ่งพิกเซลที่มี "NODATA" สถิติแบบเขตควรจะเป็น "NODATA 'ด้วยถูกต้องหรือไม่
G-wizard

2
@ G-wizard คุณถูกต้องตามที่ระบุไว้ในคำอธิบายเครื่องมือ ค่อนข้างคล้ายกับ # DIV / 0! ใน excel
c0ba1t

1

คล้ายกับคำตอบอื่นให้ย้ายข้อมูลแรสเตอร์ลงในอาร์เรย์ที่สวมหน้ากาก NumPyเพื่อคำนวณสถิติของคุณ สมมติว่าแรสเตอร์ซ้อนทับสองตัวที่มีรูปร่างเหมือนกันนี่เป็นเรื่องง่าย:

import numpy as np
zones = arcpy.RasterToNumPyArray("zones")
value = np.ma.masked_equal(arcpy.RasterToNumPyArray("value"),
                           arcpy.Raster("value").noDataValue)
print("Zone\tCount\tNoData\tMean")
for z in np.unique(zones):
    sel = (zones == z)
    print z, sel.sum(), value.mask[sel].sum(), value[sel].mean()

แสดงให้เห็นว่า:

Zone    Count   NoData  Mean
61131   53   0   8.92452830189
61154   421   1   9.04523809524
61207   1   0   8.0
61317   35   0   7.2
61644   644   0   7.90838509317
61677   12   0   7.41666666667
61789   7   0   9.0
61871   193   0   7.98445595855
187472   349   0   8.5787965616
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.