2017-05-03 1 views
0

まず、私は、以下のプログラムで、各ポリゴンの平均ラスタ温度値を抽出するための管理:R標高600m以上のポリゴンごとにラスタの平均値を抽出する方法は?

あなたはこのリンクをGISレイヤをダウンロードすることができます。

https://depots.univ-perp.fr/get?k=iTzEDSUkdyZVw2st78G

## load packages 

library(raster); library(rgdal) 

## Read rasters 

ras_temp<-raster("ras_temp.tif") 
plot(ras_temp) 
ras_alti<-raster("ras_alti.tif") 

## read polygon 

polygon <- readOGR(dsn = getwd(), layer = "polygon") 
plot(polygon,add=TRUE) 

## extract mean value for each polygon 

v1 <- extract(ras_temp, polygon, fun=mean, na.rm=TRUE) 
nom <- sapply([email protected], slot, "ID") 
v1 <- data.frame(ID = nom, Value = v1) 
View(v1) 

その後、私は各ポリゴンの温度の平均値を抽出したいのですが、標高600mを超えるサーフェスのみを抽出したいのですか?

残念ながら、私はそれを行うことはできません、私の質問高度な条件を私の関数 "抽出"にどのように統合するのですか?事前

答えて

1

ありがとうございます簡単にこのようにそれを行うことができます。

# first resample the altitude raster to the temperature one so that they are 
# "aligned" 
ras_alti.new = resample(ras_alti, ras_temp, "bilinear") 

# set to NA all data in ras_temp corresponding to cells in ras_alti.new below 600 
# metre 
ras_temp.new = ras_temp 
ras_temp.new[ras_alti.new <= 600] = NA 

# extract the data 
v2 <- extract(ras_temp.new, polygon, fun=mean, na.rm=TRUE, sp = T) 
[email protected] 

ID ras_temp 
0 417 64.11342 
1 433 68.53541 
+0

600メートル未満の表面のためのNA値を設定するために、非常に良いアイデアです。このトリックのために非常にLoBuありがとう! – tazrart

関連する問題