R:如何将具有多个值列和(几乎)不规则坐标的数据框转换为 RasterStack 或 RasterBrick?

标签 r dataframe raster

我一直在使用 R 中的数据框,它具有坐标列(其值几乎没有不规则间隔,因为我必须将它们从这个集合的分秒格式转换为小数:http://www.arcgis.com/home/item.html?id=5771199a57cc4c29ad9791022acd7f74)和与每个相关联的值列坐标,如下:

Latitude Longitude Elevation MAT MWMT MCMT   TD  MAP MSP AHM  SHM DD_0  DD5 DD_18 DD18 NFFD
54.99285 -129.9792        -2 6.8 14.4 -1.7 16.1 2473 696 6.8 20.6  283 1384  4100   30  246
54.99285 -129.9708        10 6.7 14.4 -1.8 16.1 2456 691 6.8 20.8  287 1383  4109   30  245
54.99285 -129.9625         5 6.8 14.4 -1.8 16.2 2431 686 6.9 21.0  286 1392  4097   31  246

# ... and so on.

据此,我想构建一个对应于每一列的层的 RasterBrick。我最初认为,我的数据框被命名为“clim_df”:

clim_brick <- rasterFromXYZ(clim_df, crs = NA)

能够将每个列转换为砖 block 内的栅格层,但抛出了以下错误(在我将纬度和经度列名称转换为“y”和“x”之后):

Error in rasterFromXYZ(clim_df) : x cell sizes are not regular

https://www.rdocumentation.org/packages/raster/versions/2.6-7/topics/rasterFromXYZ 看来,坐标必须均匀分布才能使此功能正常工作。

有什么办法可以解决这个问题吗?任何帮助将不胜感激。

附言我以前用过 Stack Overflow 来解决问题,但从来没有直接问过问题。如果我没有正确格式化内容,或者没有提供足够的信息,请告诉我。谢谢!

最佳答案

您可以尝试将 digits 参数设置为一个较小的数字:

# Create a sample raster:
r <- raster(nrow = 10, ncol = 10, xmn = 0, xmx = 10, ymn = 0, ymx = 10, crs = NA)
r[] <- runif(100)
xyz <- rasterToPoints(r)

# Add a small amount of error to the coordinates:
xyz[, 1:2] <- xyz[, 1:2] + as.matrix(expand.grid(xerror = runif(10, -1e-4, 1e-4), yerror = runif(10, -1e-4, 1e-4)))

# Try to convert back to raster:
rasterFromXYZ(xyz)
# Error in rasterFromXYZ(xyz) : x cell sizes are not regular

# Try again with a lower value of `digits`:
rasterFromXYZ(xyz, digits = 3)
# class       : RasterLayer 
# dimensions  : 10, 10, 100  (nrow, ncol, ncell)
# resolution  : 0.9998915, 0.9998748  (x, y)
# extent      : -2.843587e-05, 9.998886, 0.001149737, 9.999898  (xmin, xmax, ymin, ymax)
# coord. ref. : NA 
# data source : in memory
# names       : layer 
# values      : 0.007020388, 0.9953495  (min, max)

关于R:如何将具有多个值列和(几乎)不规则坐标的数据框转换为 RasterStack 或 RasterBrick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592413/

相关文章:

rgeos::gBuffer 收缩不失分

r - 在ifelse命令中测试R命令是否有错误

python - 根据 Pandas DataFrame 中其他列的条件创建新列

r - 如何提高处理大型光栅堆栈的 R 处理速度?

r - 绘制光栅文件

r - 使用 ggplot 绘制独特观察结果的图摘要

r - 清理数据集,但在描述性统计中,有关已删除数据的信息仍然存在

python - Pandas:将数据帧写入json

java - 如何在 R 或 java 中进行栅格数据同化( 3dVar )?

r - 移动水平图中颜色条/颜色键的位置