Sie können das raster
Paket verwenden, um WorldClim-Daten herunterzuladen und Informationen ?getdata
zu Auflösung, Variablen und Koordinaten zu erhalten.
Zum Beispiel:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
Bio 1 und Bio12 sind mittlere Jahrestemperatur und jährliche Niederschlagsmenge:
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
Ich erstelle zufällige Punkte als Beispiel, in Ihrem Fall verwenden Sie Koordinaten, um ein SpatialPoint
Objekt zu erstellen .
points <- spsample(as(r@extent, 'SpatialPolygons'),n=100, type="random")
Schließlich verwenden extract
. Mit cbind.data.frame
und erhalten coordinates
Sie den Wunsch data.frame.
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
Ich habe zufällige Punkte verwendet, also habe ich viele bekommen NA
. Es ist zu erwarten.
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)
Vergessen Sie nicht, dass WorldClim-Daten einen Skalierungsfaktor von 10 haben, also Temp = -37
-3,7 ºC.
Mit Koordinaten Beispiel:
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
also einen Datenrahmen aus Lats und Longs meines Datensatzes. Dann renne ich genau so, wie du es getan hast. Beim Ausführen wirdvalues
jedoch eine Fehlermeldung angezeigt :not compatible with requested type
. Mir ist auch aufgefallen, dass Siepoints
nur die Ausdehnung der Stichprobe markieren, aber keinen Vektor mit lat-langen Koordinaten erzeugenspTransform
. Wenn Sie Koordinaten in DDMMSS haben, transformieren Sie diese in DD.MMM. Zweitens haben Sie über verschiedene Koordinaten geschrieben, also interpretiere ich es als Punkte. Sie können stattdessen Polygone mit demselben Schema verwenden. Wenn Sie eine Ebene mit diesen Informationen haben,shapefile
laden Sie sie.spsample
erfordert ein räumliches Objekt, um Stichprobengrenzen festzulegen. Eingaben sind Gitter, Polygone oder Linien. Ich habe die WorlClim-Begrenzungsbox verwendet, um die Probenausdehnung festzulegen. Ich habe es getan, um in meiner Antwort ein reproduzierbares Beispiel zu geben. In Ihrem Fall müssen Sie nicht verwendenspsample
, Sie haben bereits Koordinaten zum Abtasten.