Lỗi lớn trong thống kê ArcGIS Zonal?


25

Cập nhật: Lỗi đã được sửa trong bản phát hành ArcGIS 10.4

Tôi đang sử dụng ArcGIS 10.2.2 để xác định số liệu thống kê khu vực cho một số khu vực. Nếu có bất kỳ NoData nào trong raster giá trị, tôi muốn kết quả vùng là "NoData", chính xác như được quảng cáo bởi mô tả công cụ. Mô tả công cụ này nêu:

DATA - Trong bất kỳ vùng cụ thể nào, chỉ các ô có giá trị trong raster Giá trị đầu vào sẽ được sử dụng để xác định giá trị đầu ra cho vùng đó. Các ô NoData trong raster Value sẽ bị bỏ qua trong tính toán thống kê.

NODATA - Trong bất kỳ vùng cụ thể nào, nếu có bất kỳ ô NoData nào tồn tại trong raster Giá trị, có nghĩa là không có đủ thông tin để thực hiện tính toán thống kê cho tất cả các ô trong vùng đó; do đó, toàn bộ khu vực sẽ nhận được giá trị NoData trên raster đầu ra.

Xin hãy xem thiết lập của tôi trong bức ảnh này: nhập mô tả hình ảnh ở đây

Tôi đang sử dụng tùy chọn NODATA với raster giá trị có một pixel NoData và do đó hy vọng giá trị vùng kết quả (vùng 61154) sẽ là 'NoData'. Thay vào đó, tôi nhận được giá trị 12,74 (làm tròn đến 13 trong ảnh), điều này làm tôi bối rối ở hai cấp độ: Thứ nhất, tôi mong đợi 'NoData', và thứ hai, giá trị kết quả của 12,74 là không thể về mặt toán học, vì giá trị trung bình không thể lớn hơn hơn giá trị tối đa trong raster giá trị, là 10 trong trường hợp này.

Nếu tôi đang sử dụng tùy chọn DATA, tôi nhận được giá trị khoảng 9.1, điều này có ý nghĩa. Chúng tôi đã thử nghiệm điều này trên các bộ dữ liệu, máy tính và các phiên bản ArcGIS khác nhau.

Tôi đang thiếu gì ở đây?

Chỉnh sửa / Nhận xét bổ sung: Tôi chỉ nhận thấy rằng thuộc tính 'Đếm' cũng sai đối với vùng cụ thể đó. Thực sự có 421 ô trong vùng đó, nhưng công cụ chỉ đếm được 297. Tính 421 trừ 297 kết quả trong 124 - thật kỳ lạ, đây là "vị trí" nơi đặt pixel NoData, nếu người ta đếm các pixel từ trên trái sang dưới ngay trong khu vực. Công cụ này có thể khiến số lượng tế bào sai (quá thấp), điều này có thể giải thích sự gia tăng của mức trung bình.

Chỉnh sửa: Đây là một liên kết đến dữ liệu tôi đang sử dụng.

Chỉnh sửa: Dan Patterson và tôi đã gỡ lỗi thêm ở đây tại diễn đàn ESRI.


1
Vâng, nó không tạo ra một cái gì đó điên rồ. Trong trường hợp của tôi, MEAN = 537 cho raster trong phạm vi (16,86). Không buồn cười
FelixIP

Giá trị nào được sử dụng để đại diện cho NoData trong raster này?
Jezibelle

@Jezibelle: Câu hỏi hay, tôi tìm câu trả lời đáng tin cậy ở đâu? Nếu tôi xuất dưới dạng Ascii, nó là -9999. Nếu tôi sử dụng chức năng xuất từ ​​menu ngữ cảnh, trường "NoData as:" - trường của đối thoại xuất sẽ được chuẩn bị trước với 2147483647. Điều đó có làm tăng cờ không?
G-wizard

Nó sẽ hiển thị dưới dạng một hàng trong bảng thuộc tính
Jezibelle

1
Tôi đã thực hiện một chỉnh sửa khác ở cuối bài viết của mình, nơi tôi liên kết đến một bài đăng tương tự tại diễn đàn ESRI. Lỗi được xác nhận (với một twist). Tính toán "MEAN" chỉ tạo ra kết quả khác / tệ hơn so với tính toán thống kê "TẤT CẢ".
G-wizard

Câu trả lời:


9

Có một lỗi dường như tương ứng với những gì bạn gặp phải - nó đã được đăng ký là BUG-000084883 - Tùy chọn 'Bỏ qua NoData trong tính toán' trong Công cụ thống kê Zonal khi công cụ Bảng {và công cụ Thống kê Zonal} không được vinh danh khi sản xuất, sản xuất kết quả không chính xác.

Nó xảy ra với 10.3 và 10.2.2 nhưng không phải 10.1. Bạn đã thử công cụ với phiên bản này?


Điều này nghe có vẻ là một cách tiếp cận tốt mặc dù cá nhân tôi không biết cách chạy các phiên bản cũ hơn của công cụ. Có ai biết nơi để chỉ cho tôi để cố gắng làm việc này xung quanh?
UdderlyAstray

Cảm ơn @GISGe. Bạn đã tìm thấy cái này ở đâu? Có một liên kết nơi lỗi này được ghi lại?
G-wizard

1
@ G-wizard - Tôi đã thêm liên kết trong câu trả lời của mình. Là một nhân viên quốc tế của Esri, tôi có quyền truy cập vào một mô tả chi tiết hơn những gì bạn có thể thấy, đó là cách tôi có thể cho bạn biết lỗi cũng áp dụng cho công cụ Thống kê Zonal và không được tìm thấy trong 10.1.
GISGe

@UddperedAstray - nếu bạn muốn chạy phiên bản cũ hơn của công cụ, bạn phải cài đặt phiên bản ArcGIS cũ hơn đó.
GISGe

1
Cảm ơn một lần nữa, @GISGe, vì đây là điều tôi đang tìm kiếm (lỗi chính thức được xác nhận), tôi đánh dấu câu trả lời này là đúng, mặc dù những người khác cũng đã xác nhận điều này bằng cách thực hiện các bài kiểm tra.
G-wizard

9

Đây là một lỗi. Một cái gì đó cực kỳ sai lầm với số lượng tế bào.

Trung bình đúng (9.0452380952381) số lần đúng của các ô không trống (420) chia cho 297 (đó là số lượng ô được báo cáo bởi công cụ ) cho kết quả là 12,7912457912458. Đó là một trung bình sai được báo cáo bởi công cụ.

Kết quả kiểm tra kích thước lưới đồ chơi của riêng tôi:

nhập mô tả hình ảnh ở đây


1
Tôi xác nhận tôi có cùng vấn đề với 10.3, NODATA và "MEAN"
radouxju

Cảm ơn cả hai đã xác nhận điều này. Nhưng sự khác biệt về giá trị trung bình sang một bên, tôi có sai khi cho rằng kết quả thực sự không phải là bất kỳ giá trị nào, mà là 'NODATA'? Các mô tả của công cụ dẫn tôi tin rằng. Nói: "NODATA - Trong bất kỳ vùng cụ thể nào, nếu có bất kỳ ô NoData nào tồn tại trong raster Giá trị, có nghĩa là không có đủ thông tin để thực hiện tính toán thống kê cho tất cả các ô trong vùng đó, do đó, toàn bộ vùng sẽ nhận được giá trị NoData trên raster đầu ra. " Vì có một pixel với "NODATA", nên các số liệu thống kê khu vực cũng phải là "NODATA". Đúng không?
G-wizard

2
@ G-wizard, bạn đúng, như đã nêu trong Mô tả Công cụ. hơi giống với # DIV / 0! trong excel.
c0ba1t

1

Tương tự như một câu trả lời khác , di chuyển dữ liệu raster vào mảng mặt nạ NumPy để tính toán số liệu thống kê của bạn. Giả sử hai raster lớp phủ có hình dạng giống nhau, điều này rất đơn giản:

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()

Trình diễn:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.