R裁剪光栅数据并设置轴限制

R裁剪光栅数据并设置轴限制,r,dictionary,raster,R,Dictionary,Raster,在你另一个线程的帮助下,我成功地绘制了一些全球地图。首先,我将GRIB2气象数据转换为Netcdf,然后绘制全球地图 现在我只想画出地图的一个分区。我尝试了crop命令并成功地提取了全局nc文件的子区域。但在绘图时,我找不到如何控制轴限制。它绘制了一张比数据区域大的地图,所以两边都有很大的空白 这是我用来绘制地图的脚本 library("ncdf") library("raster") library("maptools") DIA=format(Sys.time(), "%Y%m%d00")

在你另一个线程的帮助下,我成功地绘制了一些全球地图。首先,我将GRIB2气象数据转换为Netcdf,然后绘制全球地图

现在我只想画出地图的一个分区。我尝试了crop命令并成功地提取了全局nc文件的子区域。但在绘图时,我找不到如何控制轴限制。它绘制了一张比数据区域大的地图,所以两边都有很大的空白

这是我用来绘制地图的脚本

library("ncdf")
library("raster")
library("maptools")

DIA=format(Sys.time(), "%Y%m%d00") # Data d'avui
url=sprintf("ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.%s/gfs.t00z.pgrb2f00", DIA) # Ruta del ftp
loc=file.path(sprintf("%s",url))
download.file(loc,"gfs.grb",mode="wb")

system("/usr/bin/grib2/wgrib2/wgrib2 -s gfs.grb | grep :TMP: | /usr/bin/grib2/wgrib2/wgrib2 -i gfs.grb -netcdf temp.nc",intern=T)

t2m <- raster("temp.nc", varname = "TMP_2maboveground")
rt2m <- rotate(t2m)
t2mc=rt2m-273.15

DAY=format(Sys.time(), "%Y%m%d") # Data d'avui

e=extent(-40,40,20,90)
tt=crop(t2mc,e)

png(filename="gfs.png",width=700,height=600,bg="white")    
    rgb.palette <- colorRampPalette(c("snow1","snow2","snow3","seagreen","orange","firebrick"), space = "rgb")#colors
    plot(tt,col=rgb.palette(200),main=as.expression(paste("Temperatura a 2m ",DAY," + 00 UTC",sep="")),axes=T)
dev.off()
库(“ncdf”)
图书馆(“光栅”)
库(“地图工具”)
直径=格式(Sys.time(),%Y%m%d00”)#数据的avui
url=sprintf(“ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.%s/gfs.t00z.pgrb2f00",DIA#Ruta del ftp
loc=file.path(sprintf(“%s”,url))
下载文件(loc,“gfs.grb”,mode=“wb”)
系统(“/usr/bin/grib2/wgrib2/wgrib2-s gfs.grb | grep:TMP:|/usr/bin/grib2/wgrib2-i gfs.grb-netcdf temp.nc”,intern=T)

t2m下载数据文件后,我可以用 光栅。我选择这一点(如果我没有错的话),那就是你想要的 需要根据 :

我已尝试使用
plot
显示
tt
光栅,但没有 成功。但是,如果使用 不同程度(89.5而不是90):


只需将
xlim
ylim
添加到
plot
命令中,例如
plot(..,xlim=c(-10,30),ylim=c(30,80))
和nice plot,顺便说一句,+1可以看看谷歌的软件包。不确定它是否有用,但它相当整洁。它包含了IntensityMap、GeoMap和Map函数,可能会有所帮助。Hi@SimonO101这是我在查看作物之前的第一次尝试,不确定是否两者都尝试过。现在不在工作,我会试试看。非常感谢。@GeoffreyAbsalom你好,谢谢。我有一些使用光栅的脚本,所以我不想尝试其他软件包。但是听过很多谷歌的,应该在我的whish列表中。再次感谢。您必须相应地指定png画布大小。例如,
png(宽=200,高=600,…)
Gracias@oscar perpinan你的建议很有效。我将为轴、标题等寻找其他spplot选项。。。ThanksI仍将使用plot寻找解决方案。
library("raster")
t2mc <- raster('gfs.grb', band=221)

> t2mc
class       : RasterLayer 
band        : 221  (of  315  bands)
dimensions  : 361, 720, 259920  (nrow, ncol, ncell)
resolution  : 0.5, 0.5  (x, y)
extent      : -0.25, 359.75, -90.25, 90.25  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +a=6371229 +b=6371229 +no_defs 
data source : /home/oscar/gfs.grb 
names       : gfs 
e <- extent(-40,40,20,90)
tt <- crop(t2mc,e)
e <- extent(-40,40,20,89.5)
tt <- crop(t2mc,e)

spplot(tt)
library(maps)
library(mapdata)
library(maptools)

ext <- as.vector(e)
boundaries <- map('worldHires',
                  xlim=ext[1:2], ylim=ext[3:4],
                  plot=FALSE)
boundaries <- map2SpatialLines(boundaries,
                               proj4string=CRS(projection(tt)))
rgb.palette <- colorRampPalette(c("snow1","snow2","snow3","seagreen","orange","firebrick"),
                                space = "rgb")

spplot(tt, col.regions=rgb.palette,
       colorkey=list(height=0.3),
       sp.layout=list('sp.lines', boundaries, lwd=0.5))
library(rasterVis)
levelplot(tt, col.regions=rgb.palette,
          colorkey=list(height=.3)) +
    layer(sp.lines(boundaries, lwd=0.5))