| Повече ▼

Голяма грешка в зоналната статистика на ArcGIS?

Голяма грешка в зоналната статистика на ArcGIS?


Актуализация: Грешката е отстранена в изданието ArcGIS 10.4

Използвам ArcGIS 10.2.2 за определяне на зоналната статистика за редица зони. Ако има някакви NoData в растъра със стойности, искам резултатите от зоната да бъдат "NoData", точно както е обявено в описанието на инструментите. Това описание на инструмента гласи:

ДАННИ - В рамките на всяка конкретна зона само клетки, които имат стойност във входящия растер на стойност, ще бъдат използвани за определяне на изходната стойност за тази зона. Клетките NoData в растра Value ще бъдат игнорирани при статистическото изчисление.

NODATA - В рамките на която и да е конкретна зона, ако в растъра Value има клетки от 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.


Има грешка, която изглежда отговаря на това, което изпитвате - регистрирано е като BUG -000084883 - Опцията „Игнориране на NoData в изчисленията“ в зонова статистика като инструмент за таблица {и инструмент за зонална статистика} не се зачита при отметка, което води до неправилни резултати.

Това се случва с 10.3 и 10.2.2, но не и с 10.1. Опитахте ли инструмента с тази версия?


Това е бъг. Нещо ужасно не е наред с броя на клетките.

Правилно средно (9.0452380952381) пъти правилно брой непразни клетки (420), разделени на 297 (това е броят на клетките, докладван от инструмент) води до 12.7912457912458. Това е грешна средна стойност, докладвана от инструмента.

Резултати от собствения ми тест за размери на играчките:


Подобно на друг отговор, преместете растерните данни в маскирани NumPy масиви, за да изчислите статистиката си. Ако приемем два наслагващи се растра с еднаква форма, това е просто:

импортиране на numpy като np зони = arcpy.RasterToNumPyArray ("зони") стойност = np.ma.masked_equal (arcpy.RasterToNumPyArray ("стойност"), arcpy.Raster ("стойност"). noDataValue) print ( Zone  tCount  tMean ") за z в np.unique (зони): sel = (зони == z) печат z, sel.sum (), value.mask [sel] .sum (), стойност [sel] .mean ()

Показва:

Брой зони NoData Средно 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 18747

Гледай видеото: Zonal statistics in ArcGis