Ich baue eine Karte für den Nordosten der USA. Der Kartenhintergrund muss entweder eine Höhenkarte oder eine mittlere Jahrestemperaturkarte sein. Ich habe zwei Raster von Worldclim.org, die mir diese Variablen geben, aber ich muss sie auf das Ausmaß der Zustände zuschneiden, an denen ich interessiert bin. Vorschläge, wie man das macht. Das habe ich bisher:
#load libraries
library (sp)
library (rgdal)
library (raster)
library (maps)
library (mapproj)
#load data
state<- data (stateMapEnv)
elevation<-raster("alt.bil")
meantemp<-raster ("bio_1.asc")
#build the raw map
nestates<- c("maine", "vermont", "massachusetts", "new hampshire" ,"connecticut",
"rhode island","new york","pennsylvania", "new jersey",
"maryland", "delaware", "virginia", "west virginia")
map(database="state", regions = nestates, interior=T, lwd=2)
map.axes()
#add site localities
sites<-read.csv("sites.csv", header=T)
lat<-sites$Latitude
lon<-sites$Longitude
map(database="state", regions = nestates, interior=T, lwd=2)
points (x=lon, y=lat, pch=17, cex=1.5, col="black")
map.axes()
library(maps) #Add axes to main map
map.scale(x=-73,y=38, relwidth=0.15, metric=T, ratio=F)
#create an inset map
# Next, we create a new graphics space in the lower-right hand corner. The numbers are proportional distances within the graphics window (xmin,xmax,ymin,ymax) on a scale of 0 to 1.
# "plt" is the key parameter to adjust
par(plt = c(0.1, 0.53, 0.57, 0.90), new = TRUE)
# I think this is the key command from http://www.stat.auckland.ac.nz/~paul/RGraphics/examples-map.R
plot.window(xlim=c(-127, -66),ylim=c(23,53))
# fill the box with white
polygon(c(0,360,360,0),c(0,0,90,90),col="white")
# draw the map
map(database="state", interior=T, add=TRUE, fill=FALSE)
map(database="state", regions=nestates, interior=TRUE, add=TRUE, fill=TRUE, col="grey")
Die Elevations- und Meanemp-Objekte müssen an der Flächenausdehnung des Nestates-Objekts abgeschnitten werden. Jede Eingabe würde helfen
Antworten:
Ich würde das
maps
Paket verwenden und ein Status-Shapefile finden. Laden Sie das dann mit in Rrgdal
, und führen Sie dann einige Polygon-Overlay-Arbeiten aus.Wie ist das? Das Gadm-Shapefile ist ziemlich detailliert. Vielleicht möchten Sie stattdessen ein verallgemeinertes finden.
quelle
Hier ist ein Ansatz
extract()
aus demraster
Paket. Ich habe es mit Höhen- und Durchschnittstemperaturdaten von der WorldClim- Website getestet (ich beschränke dieses Beispiel auf die Höhe, die Temperatur funktioniert ähnlich), und ein entsprechendes Shapefile der USA mit Staatsgrenzen finden Sie hier . Laden Sie einfach die .zip-Daten herunter und dekomprimieren Sie sie in Ihr Arbeitsverzeichnis.Sie müssen
rgdal
undraster
Bibliotheken laden , um fortzufahren.Importieren wir nun das US-Shapefile mit
readOGR()
. Nachdem ich das CRS des Shapefiles festgelegt habe, erstelle ich eine Untermenge mit den gewünschten Zuständen. Achten Sie auf Groß- und Kleinschreibung!Importieren Sie anschließend die Rasterdaten mit
raster()
und beschneiden Sie sie mit der Ausdehnung der zuvor generierten Statusuntermenge.Als letzten Schritt müssen Sie die Pixel Ihres Höhenrasters identifizieren, die innerhalb der Grenzen der angegebenen Zustandspolygone liegen. Verwenden Sie dazu die Funktion 'mask'.
Hier ist eine sehr einfache Darstellung der Ergebnisse:
Prost,
Florian
quelle