Trace um mapa mundial com uma grade especificada com R
-
26-12-2019 - |
Pergunta
Estou tentando usar wrld_simpl do pacote maptools para traçar um pedaço do mapa mundial com uma grade de longitude/latitude.
Por exemplo, tenho um arquivo netCDF com longitude e latitude, crio uma matriz com todos os pontos que posso ter na grade:
lat <- get.var.ncdf(nc,"lat")
long <- get.var.ncdf(nc,"lon")
pts <- SpatialPoints(expand.grid(long,lat), CRS(proj4string(wrld_simpl)))
Agora quero representar graficamente os países cujas coordenadas estão na minha grade.
Não sei como fazer com atributos wrld_simpl!
Solução
Você olhou maps
mapproject
pacotes?Você pode desenhar qualquer linha de costa muito rapidamente com a resolução desejada e vem com projeções e grade.Você pode aplicar projeções a um de seus objetos (expand.grid(long,lat)
).Exemplo na Antártida:
library("mapproj")
m <- map( "world", "Antarctica", plot=FALSE)
map("world", "Antarctica", proj="conic", param=-90, fill=TRUE, col="gray")
map.grid(m, nx=4, ny=6, col="black")
front.lim <- data.frame(x=seq(-180, 180, length.out=1000),
y=rep(-62, 1000))
front.lim <- mapproject(front.lim$x, front.lim$y, projection="conic", parameters=-90)
lines(front.lim$x, front.lim$y, col="red", lwd=2)
Se você já traçou a matriz ncdf, você pode simplesmente adicionar map(add=TRUE)
.Ele lerá os limites xey e desenhará as bordas nesta área.
plot(c(-10, 45), c(30, 60), type="n", xlab="", ylab="") # image(ncdf)
map(add=TRUE, fill=TRUE, col="gray")
abline(v=seq(-10, 45, 7.5), lty=2)
abline(h=seq(-30, 60, 7.5), lty=2)