Buduję mapę dla północno-wschodnich Stanów Zjednoczonych Tłem mapy musi być mapa wysokości lub mapa średniej rocznej temperatury. Mam dwa rastry z Worldclim.org, które podają mi te zmienne, ale muszę je przyciąć do stanów, którymi jestem zainteresowany. Wszelkie sugestie, jak to zrobić. Oto co mam do tej pory:
#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")
Obiekty elewacyjne i średnie oznaczają te, które należy przyciąć do zasięgu obszaru obiektu zagnieżdżonego. Wszelkie dane mogłyby pomóc
Odpowiedzi:
Upuszczam używając
maps
pakietu i znajduję plik kształtu stanu. Następnie załaduj to do R za pomocąrgdal
, a następnie wykonaj kilka prac związanych z nakładaniem wielokątów.Jak to? Plik kształtu gadm jest dość szczegółowy, możesz zamiast tego znaleźć bardziej uogólniony plik.
źródło
Oto podejście wykorzystujące
extract()
zraster
pakietu. Przetestowałem go z danymi wysokości i średniej temperatury ze strony WorldClim (ograniczam ten przykład do wysokości, temperatura działa podobnie), a odpowiedni plik kształtu Stanów Zjednoczonych zawierający granice państwowe można znaleźć tutaj . Wystarczy pobrać dane .zip i rozpakować je do katalogu roboczego.Aby kontynuować, musisz załadować
rgdal
iraster
biblioteki.Zaimportujmy teraz plik kształtu z USA
readOGR()
. Po ustawieniu CRS pliku kształtu tworzę podzbiór zawierający pożądane stany. Zwróć uwagę na użycie dużych i małych liter początkowych!Następnie zaimportuj dane rastrowe
raster()
i przytnij je z zakresem wcześniej wygenerowanego podzbioru stanów.Na koniec musisz zidentyfikować piksele rastra wysokości, które znajdują się w granicach wielokątów danego stanu. Użyj do tego funkcji „maski”.
Oto bardzo prosty wykres wyników:
Na zdrowie,
Florian
źródło