2

我正在尝试找到一种在现有投影网格(137x108 网格点)中绘制地图的好方法。我发现库字段和 as.image-image.plot 非常简单明了,但我对显示框的分辨率并不完全满意。我试图改变nrowncol但在我的地图中出现临界值(100+)白色间隙之后。我在下面提供了一个示例,您将需要该netcdf4库来读取文件。

欢迎任何建议或替代方法。

#Elevation data can be downloaded in the following link,
#http://www.ecad.eu/download/ensembles/data/Grid_0.44deg_rot/elev_0.44deg_rot_v9.0.nc.gz

#INSTALLING-LOADING NECESSARY LIBRARIES
install.packages(fields)
install.packages(ncdf)
library(fields)
library(ncdf)

#READING FILES
orog.nc <- open.ncdf("elev_0.44deg_rot_v9.0.nc")
orog <- get.var.ncdf( orog.nc, "elevation")
orog[orog <= -99]=NA
x <- get.var.ncdf( orog.nc, "Actual_longitude")
y <- get.var.ncdf( orog.nc, "Actual_latitude")
xy <- data.frame(lon=c(x),lat=c(y))


set.panel(1,3)
#PLOTING LOW RES
look <- as.image(c(orog), x=xy, na.rm=T)
image.plot(look, col=terrain.colors(100))
world( add=TRUE)

#PLOTING "HIGH RES"
look <- as.image(c(orog), x=xy, na.rm=T, nrow=100, ncol=100)
image.plot(look, col=terrain.colors(100))
world( add=TRUE)

#PLOTING TOO "HIGH RES"
look <- as.image(c(orog), x=xy, na.rm=T, nrow=150, ncol=150)
image.plot(look, col=terrain.colors(100))
world( add=TRUE)

更新

使用 tim riffe 的建设性评论,确实对您的数据具有更精细的分辨率(例如 0.22deg - 272x214),您可以在代码中设置更高数量的 nrow 和 ncol,而不会出现白色网格点效果的问题。还有一个问题,nrow-ncol 阈值是如何定义的?

#Install Libraries and read data as the previous post,
#but instead download 0.22deg file for fine resolution.
#http://www.ecad.eu/download/ensembles/data/Grid_0.22deg_rot/elev_0.22deg_rot_v9.0.nc.gz

set.panel(1,2)

#PLOTING "LOW RES"
look <- as.image(c(orog), x=xy, na.rm=T)
image.plot(look, col=terrain.colors(100))
world( add=TRUE)

#PLOTING "HIGH RES"
look <- as.image(c(orog), x=xy, na.rm=T, nrow=175, ncol=175)
image.plot(look, col=terrain.colors(100))
world( add=TRUE)
4

0 回答 0