выравнивание двух растров для создания масок

#r #raster #mask #extent

Вопрос:

У меня есть два растра с одинаковым разрешением (10 м), но разница в том, что я создал первый растр из векторного файла (используя rasterize функцию), а другой растр является результатом моей классификации. Я хочу применить растровую маску, полученную из вектора, к результату классификации. Однако, когда я проверяю протяженность двух растров, я обнаруживаю, что они имеют немного разную протяженность (около 3 м), хотя у них одинаковая проекция (когда я проверяю crs() оба растра, они точно совпадают). Кроме того, количество строк и столбцов одинаково для обеих сеток. Когда я создаю маску, я получаю сообщение об ошибке Ошибка в compareRaster(x, маска) : разная степень. Знаете ли вы, как я могу выровнять оба растра в одной и той же начальной точке?

Ответ №1:

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

 mask_new lt;- resample(mask, img, method="ngb")  

Будьте осторожны, чтобы использовать метод интерполяции, который не изменяет информацию в файле маски. Например, ближайший сосед должен работать лучше, чем стандартный «билинейный» в большинстве случаев.

Если это не решит проблему, вы можете дополнительно попробовать поиграть с параметром «допуск», используя функцию rasterOptions()-пакета растров.

Комментарии:

1. Большое вам спасибо, сейчас это работает (с использованием повторной выборки), без ошибок. И когда я проверяю экстент обоих растров, они точно совпадают. Я не знал, что это так просто!