Обрезать растр по полигонам в коллекции sf [R sf] - PullRequest
0 голосов
/ 26 мая 2020

Я хотел бы обрезать растр, используя простой набор объектов из полигонов, чтобы получить столько растровых клипов, сколько полигонов имеется в моей коллекции sf. Затем я хотел бы сохранить каждый растровый клип в формате jpg. Вот воспроизводимый пример:

library(sf)
library(raster)
austria1 <- getData('GADM', country='AUT', level=1)
austria1 <- st_as_sf(austria1)
climate <- getData('worldclim', var='bio', res=2.5)

Я хотел бы обрезать климат по девяти полигонам в austria1, так что у меня осталось 9 растровых клипов. Затем я хотел бы сохранить эти 9 растровых клипов в виде файлов jpg в моем рабочем каталоге.

Спасибо за любую помощь!

Отметьте

1 Ответ

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

Пример данных

library(sf)
library(raster)
austria <- getData('GADM', country='AUT', level=1)
austria <- st_as_sf(austria)
climate <- getData('worldclim', var='bio', res=2.5)
climate <- climate[[1]]  # just the first layer

A для l oop

for (i in 1:nrow(austria)) {
    a <- austria1[i, ]
    fn <- tolower(paste0(a$NAME_1, ".jpg"))
    print(fn); flush.console()
    x <- crop(climate, a)
    y <- mask(x, a)
    jpeg(fn)       
    plot(y)
    dev.off()
}

Вероятно, вы захотите улучшить jpgs, изменив некоторые аргументы по умолчанию на jpeg

...