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)
基本上我想:
使用netCDF
brick
file.nc
将UTM坐标转换为latlon
将RasterBrick对象裁剪为ext <- extent(-141.01807,-52.61941,41.68144.0,83.13550)
使用levelplot
函数显示任何图层。
从2013年1月1日至2013年12月1日,时间序列为6小时
根据@RobertH的建议,我使用旧的光栅包版本确实是问题的根源。 rasnc
没有coord.ref
。在数据建模器的网页(http://weather.gc.ca/grib/grib2_RDPA_ps10km_e.html)
中,使用了覆盖北美和邻近水域的{{1}},其中北纬60度的分辨率为10 km。如何获得polar-stereographic (PS) grid
PS
的正确rasnc
之后我将projectRaster
应用于rasnc
以获取latlon
坐标
答案 0 :(得分:1)
问题是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,所以我们可以看到它是旧的);并且不要遗漏代码(如果你自己设置了coord。参考系统)