转换具有奇数行和异常范围的栅格,但不进行重采样- r

icnyk63a  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(115)

我有一个不寻常的尺寸和范围光栅,这些是全球海洋数据Map。

rodd=rast(ymin=-91,ymax=91,xmin=-1,xmax=359,nrows=91,ncols=180,crs='WGS84')

我想把它转换成这种格式,这样我就可以把它和格式良好的数据堆叠在一起

r=rast(ymin=-90,ymax=90,xmin=-180,xmax=180,nrows=90,ncols=180,crs='WGS84')

我尝试过不同的方法,但在所有情况下,数据都会被移动或修改,我的数据对位置非常敏感,例如,距离海岸100公里的数据现在距离海岸50公里。
我尝试了terra的不同功能:首先是rotate,然后是resample。我还尝试删除最下面一行,因为它包含NA值,然后是crop。但在所有情况下,我都会遇到数据的这种地理移动,使数据无法使用。我还尝试使用“mean”重新采样,但得到以下错误“Error:[重新取样]不是有效的扭曲方法””。为什么重新取样会模糊相邻单元格的数据?
是否有一种方法可以最大限度地减少数据移动和信息丢失?

zysjyyx4

zysjyyx41#

这个怎么样?

library(terra)
#> terra 1.6.33

r = rast(ymin = -91, ymax = 91, xmin = -1, xmax = 359, nrows = 91, ncols = 180, crs = 'WGS84')

# `?rotate`:
# Rotate a SpatRaster that has longitude coordinates from 0 to 360, 
# to standard coordinates between -180 and 180 degrees (or vice-versa).
r2 <- rotate(r, left = TRUE) 
r2
#> class       : SpatRaster 
#> dimensions  : 91, 180, 1  (nrow, ncol, nlyr)
#> resolution  : 2, 2  (x, y)
#> extent      : -181, 179, -91, 91  (xmin, xmax, ymin, ymax)
#> coord. ref. : lon/lat WGS 84 (EPSG:4326)

# adjust for shift in x and y and dimension
r3 <- shift(r2, dx = 1, dy = -1)
r3
#> class       : SpatRaster 
#> dimensions  : 91, 180, 1  (nrow, ncol, nlyr)
#> resolution  : 2, 2  (x, y)
#> extent      : -180, 180, -92, 90  (xmin, xmax, ymin, ymax)
#> coord. ref. : lon/lat WGS 84 (EPSG:4326)

# now you can crop the bottom row (-92° to -90°) consisting of `NA`
r4 <- crop(r3, ext(-180, 180, -90, 90), snap = "in")
r4
#> class       : SpatRaster 
#> dimensions  : 90, 180, 1  (nrow, ncol, nlyr)
#> resolution  : 2, 2  (x, y)
#> extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#> coord. ref. : lon/lat WGS 84 (EPSG:4326)

创建于2022年12月16日,使用reprex v2.0.2

相关问题