使用R绘制具有指定网格的世界地图

时间:2013-11-18 14:05:54

标签: r latitude-longitude maptools world-map

我正在尝试使用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属性!

1 个答案:

答案 0 :(得分:0)

您是否看过maps mapproject个套餐?您可以使用所需的分辨率快速绘制任何海岸线,它带有投影和网格。您可以将投影应用于某个对象(expand.grid(long,lat))。 Antartica中的示例:

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)