Estou construindo um mapa para o nordeste dos EUA. O plano de fundo do mapa precisa ser um mapa de altitude ou um mapa de temperatura média anual. Eu tenho dois rasters do Worldclim.org que me fornecem essas variáveis, mas preciso recortá-las de acordo com os estados nos quais estou interessado. Quaisquer sugestões sobre como fazer isso. Isto é o que eu tenho até agora:
#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")
Os objetos de elevação e meantemp são aqueles que precisam ser cortados na extensão da área do objeto aninhado. Qualquer entrada ajudaria
Respostas:
Eu deixaria de usar o
maps
pacote e encontraria um shapefile de estado. Em seguida, carregue isso no R usandorgdal
e faça algum trabalho de sobreposição de polígono.Como é isso? O gadp shapefile é bastante detalhado; talvez você queira encontrar um mais generalizado.
fonte
Aqui está uma abordagem usando a
extract()
partir doraster
pacote. Testei-o com dados de altitude e temperatura média no site do WorldClim (limito este exemplo à altitude, a temperatura funciona de maneira semelhante) e um arquivo de forma apropriado dos EUA que contém as fronteiras estaduais pode ser encontrado aqui . Basta baixar os dados .zip e descompactá-los no seu diretório de trabalho.Você precisa carregar
rgdal
eraster
bibliotecas para continuar.Vamos importar o shapefile dos EUA agora usando
readOGR()
. Depois de definir o CRS do shapefile, crio um subconjunto que contém os estados desejados. Preste atenção ao uso de letras maiúsculas e minúsculas!Em seguida, importe os dados de varredura usando-os
raster()
e recorte-os com a extensão do subconjunto de estados gerado anteriormente.Como etapa final, você precisa identificar os pixels da sua varredura de elevação que estão dentro das bordas dos polígonos de estado fornecidos. Use a função 'mascarar' para isso.
Aqui está um gráfico muito simples dos resultados:
Felicidades,
Florian
fonte