光栅检测和/或不正确投射crs(LCC到WGS84)

时间:2019-06-12 11:24:00

标签: raster projection netcdf

我有使用栅格函数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)
> 

enter image description here

光栅块自动检测数据的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

enter image description here

这些单位显然不是WGS84,欧洲的纵向范围不是0.12度(或横向范围是0.5度)!

有人能建议projectRaster为什么不在适当的网格上返回数据吗?我想它与输入crs的假设有关,但是我不知道将其更改为什么,因为如果我手动完成这些操作,这些值我会指定的!

1 个答案:

答案 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") )

也许最好在数据源处要求一个标准的投影描述