用R绘制指定网格的世界地图
-
26-12-2019 - |
题
我正在尝试使用 maptools 包中的 wrld_simpl 来绘制带有经度/纬度网格的世界地图。
例如,我有一个带有经度和纬度的 netCDF 文件,我创建了一个包含网格上所有点的矩阵:
lat <- get.var.ncdf(nc,"lat")
long <- get.var.ncdf(nc,"lon")
pts <- SpatialPoints(expand.grid(long,lat), CRS(proj4string(wrld_simpl)))
现在我想绘制坐标位于网格上的国家/地区。
我不知道如何处理 wrld_simpl 属性!
解决方案
你看过吗 maps
mapproject
包裹?您可以以所需的分辨率非常快速地绘制任何海岸线,并且它带有投影和网格。您可以将投影应用于您的对象之一(expand.grid(long,lat)
)。以南极洲为例:
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)
如果您已经绘制了 ncdf 矩阵,则只需添加 map(add=TRUE)
. 。它将读取 x 和 y 限制并绘制该区域的边界。
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)
不隶属于 StackOverflow