Перебирайте инкрементные растровые значения в R для создания новых наборов растровых данных - PullRequest
0 голосов
/ 23 мая 2018

извиняюсь, если об этом уже спрашивали, но я не смог найти решение своей проблемы, которая, на мой взгляд, довольно простая.У меня есть один исходный набор растровых данных, содержащий непрерывные плавающие значения в диапазоне от 100 до 500. Я хотел бы сделать цикл по этому исходному растру с шагом 50, чтобы экспортировать / создать новые наборы растровых данных со всеми значениями, которые меньше, чем приращение.Например, у меня есть следующий код R (с использованием библиотеки растров), чтобы указать растр и определить приращения.Я хотел бы разработать способ автоматического создания 9 выходных наборов растровых данных, которые меньше или равны значениям каждого приращения.Я не могу туда добраться.Кто-нибудь может помочь?TIA!

#Trying to iteratively create new raster datasets 
#Based on increments of Source Raster

library(raster)

setwd("C:/Path/To/Folder")

r=raster("Source_Raster.tif") #Raster is floating between 100 and 500

#Create a list of increments I would like to use
list <-seq(100, 500, 50)
#The list creates the following sequence:
# 100 150 200 250 300 350 400 450 500

###THIS IS WHERE I STRUGGLE####
# I would like to use the sequence to create
# new raster datasets that only include values
# from the source raster that are less than or equal to each increment

# for example, the first output raster will contain values less than 
# or equal to the first increment (100)

r100 <- calc(r, fun=function(x){ x[x > 100] <- NA; return(x)} )

1 Ответ

0 голосов
/ 23 мая 2018

После того как вы определили точки останова, мы можем использовать функцию lapply для создания каждого растрового слоя.В этом примере r_list - это конечный результат с 9 растровыми слоями.

library(raster)

set.seed(145)

# Create example raster
r <- raster(matrix(runif(100, min = 100, max = 500), ncol = 10))

# Create break points
brk <-seq(100, 500, 50)

# Conduct the operation, create nine raster than smaller than each break points
r_list <- lapply(brk, function(x){ 
  temp <- r
  temp[temp > x] <- NA 
  return(temp)
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...