我有使用栅格函数brick
读取的ncdf文件。我的示例/说明着重于砖的一层
此处有可用数据(对于tinyupload而言太大):https://wetransfer.com/downloads/f21973282c3f9aa4153e9b29ab26227f20190612111133/d1f6b123571e8f7f25cdc633e27c3fa220190612111133/7bd6ec
> rt <- brick("mrros/mrros_EUR-11_CNRM-CERFACS-CNRM-CM5_rcp85_r1i1p1_CNRM-ALADIN63_v2_mon_200601-201012.nc",
+ varname = "mrros")[[1]]
> rt
class : RasterLayer
band : 1 (of 60 bands)
dimensions : 453, 453, 205209 (nrow, ncol, ncell)
resolution : 12.5, 12.5 (x, y)
extent : -6.25, 5656.25, -6.25, 5656.25 (xmin, xmax, ymin, ymax)
crs : +proj=lcc +lat_0=49.5 +lat_1=49.5 +lon_0=10.5 +ellps=WGS84 +lat_2=45
source : C:/Users/coding/Desktop/Files/mrros/mrros_EUR-11_CNRM-CERFACS-CNRM-CM5_rcp85_r1i1p1_CNRM-ALADIN63_v2_mon_200601-201012.nc
names : X2006.01.16
z-value : 2006-01-16
zvar : mrros
>
> plot(rt)
>
光栅块自动检测数据的crs。看起来唯一可能丢失的是数据单位(间隔为12.5 km的数据)
> crs(rt)
CRS arguments:
+proj=lcc +lat_0=49.5 +lat_1=49.5 +lon_0=10.5 +ellps=WGS84 +lat_2=45
> crs(rt) = paste0(crs(rt), "+units=km")
> crs(rt)
CRS arguments:
+proj=lcc +lat_0=49.5 +lat_1=49.5 +lon_0=10.5 +ellps=WGS84 +lat_2=45+units=km
我想将投影更改为WGS84
> rtPr <- projectRaster(rt, crs = CRS("+init=EPSG:4326"))
> rtPr %>% plot
这些单位显然不是WGS84,欧洲的纵向范围不是0.12度(或横向范围是0.5度)!
有人能建议projectRaster
为什么不在适当的网格上返回数据吗?我想它与输入crs的假设有关,但是我不知道将其更改为什么,因为如果我手动完成这些操作,这些值我会指定的!
答案 0 :(得分:0)
也许这会有所帮助
library(raster)
r <- raster(f, var="mrros")
print(r)
这显示
#char Lambert_Conformal[]
# latitude_of_projection_origin: 49.5
# standard_parallel: 49.5
# longitude_of_central_meridian: 10.5
# grid_mapping_name: lambert_conformal_conic
单位存储在其他地方,并且未被栅格拾取
#dimensions
# units: km
光栅包创建了这个proj.4字符串
x <- "+proj=lcc +lat_0=49.5 +lat_1=49.5 +lon_0=10.5"
(r)gdal改变了它(我不知道为什么它加上“ lat_2”)
CRS(x)
CRS arguments:
+proj=lcc +lat_0=49.5 +lat_1=49.5 +lon_0=10.5 +ellps=WGS84 +lat_2=45
以下更改将其关闭。但是我只是在猜测。也许问题在于还有轮换吗?
crs(r) = "+proj=lcc +lat_1=49.5 +lon_0=-10.5 +ellps=WGS84 +lat_2=49.5 +units=km"
plot( projectRaster(r, crs="+proj=longlat +datum=WGS84") )
也许最好在数据源处要求一个标准的投影描述