2017-07-07 141 views
2

我必須估計某些區域的地形信息。這裏需要使用worldclim的數據。我需要估計每個30s單元在10min單元內發生的標高偏差。但是,我真的不知道如何做到這一點。我不知何故必須在地理上聚合單元格...世界各地的細胞在地理上通過使用30s分辨率估計10min分辨率的標準偏差

我首先提取worldclim所需的數據,10分鐘和30秒的高程(這裏我只是爲lon和lat選取一個隨機數)。我還提供了我使用的一個座標。所以用這個

alt <- getData("worldclim",var="alt",res=10) 

alt05_1 <- getData('worldclim', var='alt', res=0.5, lon=5, lat=45) 

lats <- c(46.06667, 46.60134) 

lons <- c(7.600000, 9.965973) 

coords <- data.frame(x=lons,y=lats) 

points_alt <- SpatialPoints(coords, proj4string = [email protected]) 

values_alt <- extract(alt,points_alt) 

altitude <- cbind.data.frame(coordinates(points_alt),values_alt) 

,我當然能夠但是提取海拔兩個relosutions,我怎麼能提取所有的意思是發生在電子商務的細胞10分鐘每隔30s細胞升高。 G。第一個座標?

回答

2

您獲得的數據格式爲Raster。所以,你應該使用library(raster)的功能。您可以通過aggregate函數直接計算標準偏差。參數fact是聚集的大小,這裏爲0.5〜10,fact=10/0.5

alt05_1 <- getData('worldclim', var='alt', res=0.5, lon=5, lat=45) 
sd_alt05 <- aggregate(alt05_1, fact = 10/0.5, fun = sd) 

爲了得到平均,您可以使用相同的功能。 mean是默認的方式:

mean_alt05 <- aggregate(alt05_1, fact = 10/0.5, fun = mean) 
+0

謝謝,它的工作!但是,我有一個問題和一個問題。首先是問題:爲什麼我需要10分鐘的分辨率來計算30s單元的平均值/ sd?我認爲這可能是彼此獨立完成的。 現在我的問題是,我需要所有30s的特定10min細胞的方法來計算這些10分鐘細胞的sd,基於它們的30個方法。但我該怎麼做?我可以通過哪種方式明確定義或調用包含我的座標的興趣單元格,以及如何提取10分鐘單元中出現的每個單個30s單元格的平均值? – Alice

+0

我的聚合函數完全符合你的要求。它計算每個10分鐘細胞中所有30秒細胞的sd。根據我的理解你的問題,沒有更多的步驟需要。 –

+0

好的。我很困惑,因爲它產生了一個新的堆棧,就像那些包含有關高程信息的堆棧一樣。如果我插入我的座標,我現在是否已經自動獲得10分鐘單元的想要的sd? – Alice