Создание векторного контура многосоставного растра [R] - PullRequest
0 голосов
/ 29 мая 2020

Я прочитал растр в своем сеансе R, используя этот код:

raster <- stack("raster.tif")

, и теперь я хотел бы создать простой объект feature (sf), представляющий контур этого растра. Я не могу использовать ограничивающую рамку, потому что растр состоит из нескольких частей, поэтому ограничивающая рамка будет намного больше, чем растр. Таким образом, посадочное место также должно быть составной частью (sf multipolygon).

Буду признателен за любую помощь с этим. Спасибо!

Марк

1 Ответ

0 голосов
/ 29 мая 2020

Если вы хотите, чтобы каждый растр в стеке, вам нужно l oop поверх каждого с помощью lapply . Это вернет список слоев многоугольника. Затем вам нужно преобразовать каждый компонент списка в мультиполигон SF. Наконец, вам необходимо объединить функции (обратите внимание, что c - это функция c ()). shp должен быть вашим мультиполигоном. Возможно, вы не захотите растворять полигоны, вы не совсем ясно дали понять, что вы хотите.

a <- lapply(as.list(raster), rasterToPolygons, dissolve=TRUE)
b <- lapply(a, st_as_sf) # convert to sf multipolygon
shp <- Reduce(c, b) # combine all polygons to one

В качестве примечания, вероятно, не очень хорошо использовать растр в качестве имени переменной, потому что пакет растров имеет функцию под названием растр.

...