Anda dapat menggunakan raster
paket untuk mengunduh data WorldClim, melihat ?getdata
untuk mengetahui tentang resolusi, variabel, dan koordinat.
Sebagai contoh:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
Bio 1 dan Bio12 adalah suhu rata-rata tahunan dan curah hujan tahunan:
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
Saya membuat titik acak sebagai contoh, dalam kasus Anda gunakan koordinat untuk membuat SpatialPoint
objek.
points <- spsample(as(r@extent, 'SpatialPolygons'),n=100, type="random")
Akhirnya, gunakan extract
. Dengan cbind.data.frame
dan coordinates
Anda akan mendapatkan data.frame keinginan.
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
Saya menggunakan poin acak, jadi saya mendapat banyak NA
. Itu yang diharapkan.
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)
Jangan lupa bahwa data WorldClim memiliki faktor skala 10, jadi Temp = -37
-3.7 ºC.
Dengan koordinat contoh:
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
yang merupakan kerangka data lats dan long dari set data saya. Lalu saya menjalankan persis seperti yang Anda lakukan. Namun, ketika saya menjalankanvalues
saya mendapatkan error:not compatible with requested type
. Saya juga memperhatikan bahwa Andapoints
hanya menandai sejauh mana sampel, tetapi tidak menghasilkan vektor dengan koordinat lat-panjangspTransform
. Jika Anda memiliki koordinat dalam DDMMSS, ubah itu menjadi DD.MMM. Kedua, Anda menulis tentang koordinat yang berbeda, jadi saya menafsirkannya sebagai poin, Anda dapat menggunakan poligon dengan skema yang sama. Jika Anda memiliki lapisan dengan informasi ini, gunakanshapefile
untuk memuatnya.spsample
membutuhkan objek spasial untuk menetapkan batas sampel. Input adalah kisi, poligon, atau garis. Apa yang saya lakukan adalah menggunakan kotak batas WorlClim untuk mengatur luas sampel. Saya melakukannya untuk membuat contoh yang dapat direproduksi dalam jawaban saya. Dalam kasus Anda, Anda tidak perlu menggunakanspsample
, Anda sudah koordinat ke sampel.