将 UTM 转换为 latlon rasterBrick R

Convert UTM to latlon rasterBrick R

library(raster)
library(ncdf)
library(rgdal)

我在将 rasterBrick 对象中的 UTM 转换为 latlon 时遇到了一些问题。我的代码如下:

示例文件可以在这里找到: https://www.dropbox.com/s/yv4opmrx1v4whpt/2013_000_CaPA_continental_v2.3-analyse_final_10km_6h_APCP.nc.7z?dl=0

rasnc<- brick('file.nc', varname = "APCP_surface")

rasnc
#class       : RasterBrick 
#dimensions  : 824, 935, 770440, 1460  (nrow, ncol, ncell, nlayers)
#resolution  : 10000, 10000  (x, y)
#extent      : -5000, 9345000, -5000, 8235000  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

wgs84.p4s <- "+proj=longlat +datum=NAD83 +ellps=GRS80 +no_defs"
# reprojecting
rx <- projectRaster(from=rasnc, crs=wgs84.p4s,method="ngb")

以上不会从UTM转换为latlon。我什至尝试将文件写入 GeoTIFF,然后重新投影,但仍然没有用。

writeRaster(rasnc, file="myfil.tif", format="GTiff", overwrite=TRUE)

基本上我正在尝试:

时间序列是从 Jan-01-2013 到 dec-01-2013 每 6 小时

正如@RobertH 所建议的那样,我使用较旧的光栅包版本确实是问题的根源。 rasnc 没有 coord.ref。从数据建模者的网页 (http://weather.gc.ca/grib/grib2_RDPA_ps10km_e.html) 中可以看出,polar-stereographic (PS) grid 使用北纬 60 度的 10 公里分辨率覆盖北美和邻近水域。我怎样才能为 rasnc 获得正确的 PS 然后我将 projectRaster 应用到 rasnc 以获得 latlon 坐标

问题是 rasnc 报告它有一个 lon/lat 坐标参考系统 (#coord. ref. : +proj=longlat +datum=WGS84);这看起来不正确。如果你知道它应该是什么,(你说的是 UTM,但区域是什么?),分配它:

  crs(rasnc) <- '+proj=utm +zone=??? +datum=WGS84'

然后事情应该会起作用。 问题是,这是怎么出错的?

我得到:

library(raster)
r <- brick("2013_000_CaPA_continental_v2.3-analyse_final_10km_6h_APCP.nc")
#Loading required namespace: ncdf4
#r
#class       : RasterBrick 
#dimensions  : 824, 935, 770440, 1460  (nrow, ncol, ncell, nlayers)
#resolution  : 10000, 10000  (x, y)
#extent      : -5000, 9345000, -5000, 8235000  (xmin, xmax, ymin, ymax)
#coord. ref. : NA 

这是正确的,因为此文件不提供坐标参考系统信息。

首先更新你的光栅版本(你使用的是ncdf而不是ncdf4,所以我们可以看到它是旧的);并且不要遗漏代码(如果你自己设置坐标。参考系统)