Основная ошибка в зональной статистике ArcGIS?


25

Обновление: ошибка была исправлена ​​в выпуске ArcGIS 10.4

Я использую ArcGIS 10.2.2 для определения зональной статистики для ряда зон. Если в растре значений есть какие-либо NoData, я хочу, чтобы результаты зоны были «NoData», в точности так, как указано в описании инструментов. Это описание инструмента гласит:

ДАННЫЕ - В любой конкретной зоне только ячейки, имеющие значение в растре входного значения, будут использоваться при определении выходного значения для этой зоны. Ячейки NoData в растре Value будут игнорироваться при вычислении статистики.

NODATA - в какой-либо конкретной зоне, если в растре значений существуют какие-либо ячейки NoData, считается, что информации недостаточно для выполнения статистических вычислений для всех ячеек в этой зоне; следовательно, вся зона получит значение NoData в выходном растре.

Пожалуйста, посмотрите на мои настройки на этой картинке: введите описание изображения здесь

Я использую опцию NODATA с растром значений, который имеет один пиксель NoData, и поэтому ожидаю, что результирующее значение зоны (зона 61154) будет 'NoData'. Вместо этого я получаю значение 12,74 (округленное до 13 на изображении), что смущает меня на двух уровнях: во-первых, я ожидал «NoData», а во-вторых, результирующее значение 12,74 математически невозможно, поскольку среднее не может быть больше чем максимальное значение в значении растра, которое в данном случае равно 10.

Если я использую опцию DATA, я получаю значение около 9,1, что имеет смысл. Мы проверили это на разных наборах данных, компьютерах и версиях ArcGIS.

Что мне здесь не хватает?

Редактировать / Дополнительный комментарий: Я только что заметил, что атрибут «Количество» также не подходит для этой конкретной зоны. В этой зоне действительно 421 ячейка, но инструмент насчитал только 297. При подсчете 421 минус 297 получается 124 - как ни странно, это «позиция», в которой расположен пиксель NoData, если считать пиксели от левого верхнего до нижнего прямо в зоне. Инструментом может быть неправильное (слишком низкое) количество ячеек, что может объяснить увеличение среднего значения.

Изменить: Вот ссылка на данные, которые я использую.

Изменить: Дэн Паттерсон и я сделали дальнейшую отладку здесь, на форуме ESRI.


1
Да, это производит что-то сумасшедшее. В моем случае MEAN = 537 для растра в диапазоне (16,86). Не смешно
FelixIP

Какое значение используется для представления NoData в этом растре?
Иезибель,

@Jezibelle: Хороший вопрос, где мне найти надежный ответ? Если я экспортирую как Ascii, это -9999. Если я использую функцию экспорта из контекстного меню, поле «NoData as:» - диалоговое окно экспорта будет предварительно заполнено 2147483647. Это поднимает флаг?
Большой волшебник

Это будет отображаться как строка в таблице атрибутов
Джезибель

1
Я сделал еще одно изменение в конце своего поста, где я ссылаюсь на аналогичный пост на форуме ESRI. Ошибка подтверждена (с изюминкой). Вычисление «MEAN» дает только другие / худшие результаты, чем вычисление «ALL» статистики.
Большой Волшебник

Ответы:


9

Существует ошибка, которая, по-видимому, соответствует тому, что вы испытываете - она ​​зарегистрирована как BUG-000084883 - Опция «Игнорировать данные в расчетах» в инструменте «Зональная статистика как таблица» {и инструмент Зональная статистика} не отмечена, если отключена, неверные результаты.

Это происходит с 10.3 и 10.2.2, но не с 10.1. Вы пробовали инструмент с этой версией?


Это звучит как хороший подход, хотя я лично не знаю, как запустить старые версии инструмента. Кто-нибудь знает, куда мне направить эту работу?
UdderlyAstray

Спасибо @GISGe. Где ты нашел это? Есть ли ссылка, где эта ошибка задокументирована?
G-волшебник

1
@ G-wizard - я добавил ссылку в свой ответ. Как международный сотрудник Esri, у меня есть доступ к более подробному описанию, чем то, что вы видите, поэтому я могу сказать вам, что ошибка также относится к инструменту зональной статистики и отсутствует в 10.1.
GISGe

@UdderlyAstray - если вы хотите запустить более старую версию инструмента, вы должны установить старую версию ArcGIS.
GISGe

1
Еще раз спасибо, @GISGe, так как это то, что я ищу (ошибка официально подтверждена), я отмечаю этот ответ как правильный, хотя другие также подтверждают это, выполняя тесты.
Большой волшебник

9

Это ошибка. Что-то ужасно не так с количеством клеток.

Правильное среднее (9,0452380952381) умноженное на правильное количество непустых ячеек (420), деленное на 297 (то есть количество ячеек, сообщенных инструментом ), приводит к 12,7912457912458. Это неверное среднее значение, сообщаемое инструментом.

Результаты моего собственного теста игрушечных сеток:

введите описание изображения здесь


1
Я подтверждаю, что у меня такая же проблема с 10.3, NODATA и «MEAN»
radouxju

Спасибо обоим за подтверждение этого. Но кроме различий в среднем значении, я ошибаюсь, полагая, что результат на самом деле должен быть не каким-либо значением, а «NODATA»? Описание инструмента заставляет меня поверить в это. Говорит: «NODATA - в какой-либо конкретной зоне, если в растре значений существуют какие-либо ячейки NoData, считается, что информации недостаточно для выполнения статистических вычислений для всех ячеек в этой зоне; поэтому вся зона получит значение NoData на выходной растр. " Так как с «NODATA» есть один пиксель, зональная статистика также должна быть «NODATA». Правильно?
G-wizard

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.