Je construis une carte pour le nord-est des États-Unis. L'arrière-plan de la carte doit être une carte d'altitude ou une carte de température annuelle moyenne. J'ai deux rasters de Worldclim.org qui me donnent ces variables mais je dois les découper dans la mesure des états qui m'intéressent. Toutes suggestions sur la façon de le faire. Voici ce que j'ai jusqu'à présent:
#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")
Les objets elevation et meanemp sont ceux qui doivent être clipsés sur l'étendue de la zone de l'objet niché. Toute entrée aiderait
Réponses:
Je laisserais tomber en utilisant le
maps
paquet et trouverais un shapefile d'état. Puis chargez-le dans R avecrgdal
, puis effectuez un travail de superposition de polygones.Comment ça Le fichier de formes gadm est assez détaillé, vous voudrez peut-être en trouver un plus généralisé.
la source
Voici une approche utilisant
extract()
leraster
package. Je l'ai testé avec les données d' altitude et de température moyenne du site Web WorldClim (je limite cet exemple à l'altitude, la température fonctionne de la même manière) et vous trouverez ici un fichier de formes approprié contenant les frontières des États américains . Il suffit de télécharger les données .zip et de les décompresser dans votre répertoire de travail.Vous devez charger
rgdal
et lesraster
bibliothèques afin de procéder.Importons maintenant le fichier de formes américain utilisant
readOGR()
. Après avoir défini le fichier CRS du fichier de formes, je crée un sous-ensemble contenant les états souhaités. Faites attention à l'utilisation de majuscules et de petites lettres initiales!Ensuite, importez les données raster à l'aide de
raster()
et recadrez-les avec l'étendue du sous-ensemble d'états précédemment généré.Enfin, vous devez identifier les pixels de votre raster d'altitude situés dans les limites des polygones d'états donnés. Utilisez la fonction 'masque' pour cela.
Voici un graphique très simple des résultats:
A bientôt,
Florian
la source