将 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)
基本上我正在尝试:
使用brick
阅读netCDF
file.nc
将UTM坐标转换为latlon
将 RasterBrick 对象裁剪为 ext <- extent(-141.01807,-52.61941,41.68144.0,83.13550)
使用 levelplot
函数显示任何图层。
时间序列是从 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,所以我们可以看到它是旧的);并且不要遗漏代码(如果你自己设置坐标。参考系统)
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)
基本上我正在尝试:
使用
brick
阅读将UTM坐标转换为latlon
将 RasterBrick 对象裁剪为
ext <- extent(-141.01807,-52.61941,41.68144.0,83.13550)
使用
levelplot
函数显示任何图层。
netCDF
file.nc
时间序列是从 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,所以我们可以看到它是旧的);并且不要遗漏代码(如果你自己设置坐标。参考系统)