我想做一个全球光栅Map在圆形(波多野投影)。我有光栅从ERA5数据是在GCS坐标系。
我应用了以下代码:
library(raster)
library(ggplot2)
library(viridis)
library(tidyterra)
library(terra)
setwd("C:/Users/usman/Desktop/a")
r= raster("SH.tif")
p = projectRaster(r, crs = "+proj=hatano",method = "bilinear")
g = graticule(60, 45, "+proj=hatano")
plot(g, background="azure", mar=c(.2,.2,.2,4), lab.cex=0.5, col="light gray")
myplot = plot(p, add=TRUE, axes=FALSE, plg=list(shrink=.8), col=viridis(25))
ggsave("tile_plot2.png", plot=myplot, height=4, width=6.5, dpi=150)`
我的输出是
不过,我想要这个
部分代码和参考图像取自以下线程R ggplot plotting map raster with rounded shape - How to remove data outside projected area?
此外,当我试图保存使用一个空白文件生成.
2条答案
按热度按时间sqserrrh1#
下面是一个可重现的示例
如果您想将其保存为png文件,可以执行以下操作
需要记住的一件事是,您需要调整画布的大小,以匹配您正在制作的Map的大小。
您的问题和代码不是很清楚,您提到了ggplot2,但您没有使用它,如何使用ggplot2执行上述操作请参见original post
在应使用terra::project的位置使用raster::projectRaster。创建经纬网但未使用。
jljoyd4f2#
我对此的看法是,由于某种原因,
ggplot2
在标记+proj=hatano
的轴时工作得特别糟糕(世界Map的ggplot2轴标记特别混乱,请参见this question),所以我需要手动将它们放置在经纬网的起点(使用lwgeom::st_startpoint()
计算: