我有一个相当高清晰度的全局地图栅格,想要绘制文件,但似乎无法保持分辨率。绘制受限区域的工作正常,但无论我使用何种方法,整个世界总是以降低的分辨率结束。我在这里错过了什么吗?在没有这个问题之前,我经常会输出高分辨率的栅格,但在这种情况下,我无法确定原因。举例说明:
require(raster)
require(rworldmap)
data(countriesCoarse); worldmap = countriesCoarse
worldmap@data = data.frame(x = rep(1,length(worldmap))) # uniform vector
x_res = 3600; y_res = 1800
r0 <- raster(extent (-180,180,-90,90), ncol=x_res, nrow=y_res, crs=crs(worldmap))
rastermap <- rasterize(worldmap, r0, 'x') # ~ 2 mins
# small-area plot confirms raster's data resolution is ok
plot(rastermap, col='grey', xlim=c(-10,5), ylim=c(49,60), asp=T, axes=F, box=F, legend=F)
# the resolution is maintained for limited-area plot to file
png('plot0.png', width=x_res, height=y_res)
plot(rastermap, col='grey', axes=F, box=F, legend=F, xlim=c(-10,5), ylim=c(49,60), asp=T)
dev.off(); browseURL('plot0.png')
# but outputting global plots loses resolution..
par(mai=c(0,0,0,0))
png('plot1.png', width=x_res, height=y_res)
plot(rastermap, col='grey', axes=F, box=F, legend=F)
dev.off(); browseURL('plot1.png')
png('plot2.png', width=x_res, height=y_res)
image(rastermap, col='grey')
dev.off(); browseURL('plot2.png')
pdf('plot3.pdf', width=24, height=12)
plot(rastermap, col='grey', axes=F, box=F, legend=F)
dev.off(); browseURL('plot3.pdf')
require(Cairo)
CairoPNG('plot4.pdf', width=x_res, height=y_res)
plot(rastermap, col='grey', axes=F, box=F, legend=F)
dev.off(); browseURL('plot4.pdf')
这就是输出图文件通常出来的方式(相同的分辨率输出):
答案 0 :(得分:6)
尝试?plot
,阅读包raster
提供的绘图方法,并找出maxpixels
参数。然后,尝试例如。
plot(rastermap, col='grey', axes=F, box=F, legend=F, maxpixels=1e8)
或
plot(rastermap, col='grey', axes=F, box=F, legend=F, maxpixels= x_res * y_res)
让图形设备进行光栅化的速度更快:
require(Cairo)
CairoPNG('plot4.png', width=x_res, height=y_res)
plot(worldmap, col = 'grey', border = 'grey')
dev.off();
browseURL('plot4.png')