回答:
raster
パッケージを使用してWorldClimデータをダウンロードできます?getdata
。解像度、変数、座標については、を参照してください。
例として:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
Bio 1とBio12は、平均気温と年間降水量です。
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
例としてランダムな点を作成しSpatialPoint
ます。あなたの場合、座標を使用してオブジェクトを作成します。
points <- spsample(as(r@extent, 'SpatialPolygons'),n=100, type="random")
最後に、を使用しますextract
。cbind.data.frame
し、coordinates
あなたは欲望のdata.frameを取得します。
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
私はランダムなポイントを使用したので、たくさん獲得しましたNA
。期待されることです。
head(df)
x y Temp Prec
1 112.95985 52.092650 -37 388
2 163.54612 85.281643 NA NA
3 30.95257 5.932434 270 950
4 64.66979 40.912583 150 150
5 -169.40479 -58.889104 NA NA
6 51.46045 54.813600 36 549
plot(r[[1]])
plot(points,add=T)
WorldClimデータのスケール係数は10であるためTemp = -37
、-3.7ºC であることを忘れないでください。
座標の例:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
lats <- c(9.093028 , 9.396111, 9.161417)
lons <- c(-11.7235, -11.72975, -11.709417)
coords <- data.frame(x=lons,y=lats)
points <- SpatialPoints(coords, proj4string = r@crs)
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
df
x y Temp Prec
1 -11.72350 9.093028 257 2752
2 -11.72975 9.396111 257 2377
3 -11.70942 9.161417 257 2752
points
私のデータセットの緯度と経度のデータフレームです。それから私はあなたがしたのと全く同じように走ります。しかし、実行するvalues
とエラーが発生しますnot compatible with requested type
。またpoints
、サンプルの範囲をマークするだけで緯度経度の座標を持つベクトルが生成されないことにも気付きました
spTransform
ます。DDMMSSに座標がある場合は、それをDD.MMMに変換します。第二に、あなたは異なる座標について書いたので、私はそれをポイントとして解釈します、同じスキーマで代わりにポリゴンを使用できます。この情報を含むレイヤーがある場合は、shapefile
それをロードするために使用します。
spsample
サンプル境界を設定するには、空間オブジェクトが必要です。入力は、グリッド、ポリゴン、またはラインです。私がやったことは、WorlClim境界ボックスを使用してサンプル範囲を設定することでした。私の回答で再現可能な例を作るためにそれをしました。あなたの場合、を使用する必要はありませんspsample
。すでにサンプリングするための座標があります。