ArcGIS Zonal 통계의 주요 버그?


25

업데이트 : 버그가 ArcGIS 10.4 릴리스에서 수정되었습니다.

ArcGIS 10.2.2를 사용하여 여러 영역에 대한 구역 통계를 결정하고 있습니다. 값 래스터에 NoData가 있으면 도구 설명에서 알 수 있듯이 영역 결과가 "NoData"가되기를 원합니다. 이 도구 설명 은 다음을 나타냅니다.

DATA — 특정 영역 내에서는 입력 값 래스터에 값이있는 셀만 해당 영역의 출력 값을 결정하는 데 사용됩니다. 통계 계산에서 값 래스터의 NoData 셀은 무시됩니다.

NODATA — 특정 영역 내에서 값 래스터에 NoData 셀이 있으면 해당 영역의 모든 셀에 대한 통계 계산을 수행하기위한 정보가 충분하지 않은 것으로 간주됩니다. 따라서 전체 영역은 출력 래스터에서 NoData 값을받습니다.

이 그림에서 내 설정을 살펴보십시오. 여기에 이미지 설명을 입력하십시오

하나의 NoData 픽셀이있는 값 래스터와 함께 NODATA 옵션을 사용하고 있으므로 결과 영역 값 (영역 61154)이 'NoData'가 될 것으로 예상합니다. 대신 12.74 값 (이미지에서 13으로 반올림)을 얻음으로써 두 가지 수준에서 혼란을 겪습니다. 첫째, 'NoData'를 예상했고 두 번째로 12.74의 결과 값은 수학적으로 불가능합니다. 평균은 더 클 수 없습니다. 값 래스터의 최대 값보다이 값은 10입니다.

DATA 옵션을 사용하는 경우 약 9.1의 값을 얻습니다. 다른 데이터 세트, 컴퓨터 및 ArcGIS 버전에서이를 테스트했습니다.

내가 여기서 무엇을 놓치고 있습니까?

편집 / 추가 의견 : 방금 'Count'속성이 해당 특정 영역에 잘못되었음을 알았습니다. 해당 영역에는 실제로 421 개의 셀이 있지만이 도구는 297 개만 계산했습니다. 421에서 297을 뺀 결과는 124입니다. 이상하게도 NoData 픽셀이있는 "위치"입니다. 영역에서 바로. 이 도구는 셀 수가 잘못되어 (너무 낮아서) 평균 증가를 설명 할 수 있습니다.

편집 : 여기에 내가 사용 하는 데이터에 대한 링크가 있습니다.

편집 : 댄 패터슨과 좀 더 디버깅을했다 여기 ESRI의 포럼에서.


1
그렇습니다. 필자의 경우 (16,86) 범위의 래스터에 대해 MEAN = 537입니다. 재미 있지 않음
FelixIP

이 래스터에서 NoData를 나타내는 데 사용되는 값은 무엇입니까?
Jezibelle

@Jezibelle : 좋은 질문입니다. 신뢰할만한 답은 어디에서 찾을 수 있습니까? Ascii로 내 보내면 -9999입니다. 상황에 맞는 메뉴에서 내보내기 기능을 사용하면 내보내기 대화 상자의 "NoData as :"필드에 2147483647이 미리 채워집니다. 플래그가 발생합니까?
G-wizard

속성 테이블에 행으로 표시됩니다
Jezibelle

1
ESRI 포럼에서 비슷한 게시물로 연결 되는 게시물 끝에 다른 수정 작업을 수행했습니다 . 오류가 확인되었습니다 (비틀림). "MEAN"을 계산하면 "ALL"통계를 계산하는 것보다 다르거 나 더 나쁜 결과 만 생성됩니다.
G-wizard

답변:


9

현재보고있는 버그에 해당하는 버그가 있습니다 -BUG-000084883 으로 등록되어 있습니다- 테이블 도구 {및 영역 통계 도구}로 영역 통계의 '계산시 NoData 무시'옵션이 비활성화되어 생성 될 때 적용되지 않습니다 잘못된 결과.

10.3 및 10.2.2에서는 발생하지만 10.1에서는 발생하지 않습니다. 이 버전으로 도구를 사용해 보셨습니까?


개인적으로 이전 버전의 도구를 실행하는 방법을 모르지만 이것은 좋은 접근 방법처럼 들립니다. 누군가이 문제를 해결하기 위해 나를 가리킬 곳을 알고 있습니까?
UdderlyAstray

@GISGe에게 감사합니다. 어디서 찾았어요? 이 버그가 문서화 된 링크가 있습니까?
G-wizard

1
@ G-wizard-답변에 링크를 추가했습니다. Esri 국제 직원으로서 나는 당신이 볼 수있는 것보다 더 자세한 설명에 액세스 할 수 있습니다. 그래서 버그가 영역 통계 도구에도 적용되며 10.1에서는 발견되지 않습니다.
GISGe

@UdderlyAstray-이전 버전의 도구를 실행하려면 해당 이전 버전의 ArcGIS를 설치해야합니다.
GISGe

1
다시 한 번 감사드립니다. @GISGe, 이것이 내가 찾고있는 것이므로 (버그 공식적으로 확인 됨), 다른 사람들도 테스트를 통해 이것을 확인했지만이 답변을 올바른 것으로 표시하고 있습니다.
G-wizard

9

버그입니다. 세포 수에 심각한 문제가 있습니다.

정확한 평균 (9.0452380952381) 배 정확한 (297)에 의해 분할되지 않은 빈 셀 (420)의 수 (셀 카운트가보고 12.7912457912458 결과). 그것은 도구에 의해보고 된 잘못된 평균입니다.

내 장난감 크기 그리드 테스트 결과 :

여기에 이미지 설명을 입력하십시오


1
10.3, NODATA 및 "MEAN"과 동일한 문제가 있음을 확인합니다.
radouxju

이것을 확인해 주셔서 감사합니다. 그러나 평균 값의 차이는 제쳐두고, 결과가 실제로는 가치가 아니라 'NODATA'라고 가정하는 것이 잘못입니까? 이 도구에 대한 설명은 저를 믿습니다. "NODATA — 특정 영역 내에서 값 래스터에 NoData 셀이 있으면 해당 영역의 모든 셀에 대한 통계 계산을 수행하기위한 정보가 충분하지 않은 것으로 간주되므로 전체 영역에 NoData 값이 수신됩니다. "출력 래스터에." ?. 하나의 픽셀은 "NODATA"거기 때문에, 동서 통계는 ' "수정 NODATA해야
G-마법사

2
@ G-wizard, 도구 설명에 명시된대로 정확합니다. # DIV / 0과 다소 유사합니다! 엑셀로.
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.