Измените двоичный растр, чтобы получить * пропорцию * в новом окне ячейки

9

Я хотел бы перейти от бинарного растра леса / нелесного леса с разрешением 30 м к растру с разрешением 240 м, причем значение каждой ячейки равно доле леса, то есть значения данных для ячеек 240 м будут идти от 0 (где все клетки в 30-метровом растре были нулевыми / не лесными) через 0,5 (где половина 30-метровых ячеек были лесными, половина - не лесными) до 1 (где все клетки в 30-метровом растре были покрыты лесом).

Хотя было предложено не использовать билинейную интерполяцию для дискретных данных, насколько я могу судить, результат с двоичными данными 0/1 будет означать получение среднего значения (то есть пропорции между 1 и 0). Это разумный способ сделать это, или есть лучший метод?

Я могу использовать Arc, QGIS и Idrisi.

stuckGIS
источник

Ответы:

13

Используйте Блочную статистику .

Это работает как Фокальная статистика, вычисляя статистическую сводку (такую ​​как желаемое среднее значение) в пределах определенного соседства ячеек (например, квадрат 8 на 8, где 8 = 240 м / 30 м), за исключением того, что это выполняется только для регулярное подразделение сетки, а не с набором перекрывающихся окрестностей, по одному в каждой ячейке.

Вы также можете использовать статистику фокуса, если действительно хотите: после вычисления среднего значения фокуса по 8 на 8 квадратов выполнить повторную выборку в сетку 240 м, используя повторную выборку ближайшего соседа . Когда сетки зарегистрированы друг для друга ( то есть имеют одинаковое происхождение), это должно дать тот же результат, что и block statistics. (Я не гарантирую, что: когда выбор новых центров камер совпадает со старыми углами камер, как это будет происходить здесь, необходимо сделать произвольный выбор, и, если разные комитеты закодировали две процедуры, они могли бы сделать разные выборы: мало в ArcGIS действительно последовательна, боюсь.)

Другой подход состоит в том, чтобы создать сетку зон, по одной зоне на квадрат, где требуется среднее значение, и выполнить зональную сводку в виде сетки. Зоны могут быть вычислены математически из сеток координат строк и столбцов (с помощью функции floorили int, путем переклассификации или путем присоединения подходящей таблицы к таблице атрибутов).

Я закрою, отметив, что билинейная интерполяция, хотя она действительно даст значения в диапазоне 0..1, это не то, что вам нужно: она работает, находя не более четырех исходных (30 м) ячеек сетки, окружающих центр новой ( 240 м) ячейки и интерполяции только их значений. Таким образом, он будет игнорировать другие 8 * 8 - 4 = 60 исходных ячеек, попадающих в каждый новый блок. Я иллюстрирую билинейную интерполяцию на http://www.quantdec.com/SYSEN597/GTKAV/section9/map_algebra.htm : обсуждение начинается в середине страницы.

Whuber
источник
Спасибо, это то, что я сделал - использовал Block Statistics в Arc для получения суммы группы 8x8, затем использовал Raster Calculator в QGIS, чтобы разделить на 64 и выровнять источник, экстент и размер ячейки с остальными моими данными.
stuckGIS
stuckGIS, вы можете пропустить второй шаг, используя Статистика блока, чтобы вычислить среднее значение для каждого блока 8 × 8. Выравнивание новой сетки - это вопрос правильного задания среды растрового анализа, что, если это будет сделано до начала вычислений, произойдет автоматически. Это сокращает ваш рабочий процесс до одного шага: выполнить среднее значение блока.
whuber
4

В ArcGIS, когда вы повторно измеряете данные с помощью билинейной повторной выборки, он просматривает только значения четырех центральных ячеек ( документация повторной выборки ). Таким образом, используя этот метод, вы все равно потеряете данные, если не компенсируете потерю данных.

Учитывая, что мы знаем, что для пересчитанных ячеек вы хотите получить долю клеток, которые покрыты лесом, мы можем думать об этом как о сумме 30-метровых ячеек, разделенных на 64 (в блоке 240 м есть 64 30-метровые ячейки).

Это означает, что если мы сможем создать новый растр со значениями центра в виде суммы окружающих значений при разрешении 30 м, снижение разрешения с помощью повторной выборки с ближайшим соседом или билинейной интерполяции даст нам 240-метровые ячейки, которые являются суммой 30-метровых ячеек, которые они обложка. Мы можем сделать это с помощью фокальной суммы инструмента над 30м растром.

Наконец, когда у нас есть растр с фокусной суммой 240 м, разделите его на 64, чтобы получить ответ.

В Idrisi я не уверен в алгоритмах сэмплирования изображений, также как и в QGIS, но я думаю, что есть нечто подобное. Конечно, в QGIS вы можете обработать растр в Python, используя scipy ndimage или подобное.

om_henners
источник