【问题标题】:R - rasters with same crs, extent, dimension, resolution do not alignR - 具有相同 crs、范围、尺寸、分辨率的栅格不对齐
【发布时间】:2016-11-03 06:42:26
【问题描述】:

我正在计算枫糖浆每年的平均生产天数。我的枫叶分布数据在一个 ascii 文件中。我有一个名为 brick.Tmax 的栅格(从 NetCDF 文件创建)。我想将brick.Tmax 的规格与我的枫叶分布数据相匹配。

##    These are the specs I want to use for my maple distribution
brick.Tmax
class       : RasterBrick 
dimensions  : 222, 462, 102564, 366  (nrow, ncol, ncell, nlayers)
resolution  : 0.125, 0.125  (x, y)
extent      : -124.75, -67, 25.125, 52.875  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : E:\all_files\gridded_obs.daily.Tmax.1980.nc 
names       : X1980.01.01, X1980.01.02, X1980.01.03, X1980.01.04,    X1980.01.05, X1980.01.06, X1980.01.07, X1980.01.08, X1980.01.09, X1980.01.10, X1980.01.11, X1980.01.12, X1980.01.13, X1980.01.14, X1980.01.15, ... 
Date        : 1980-01-01, 1980-12-31 (min, max)
varname     : Tmax 

## reading in red maple data from ascii file into rasterLayer
red_raster <- raster("E:/all_files/Maple_Data/redmaple.asc")
red_raster
class       : RasterLayer 
dimensions  : 140, 150, 21000  (nrow, ncol, ncell)
resolution  : 20000, 20000  (x, y)
extent      : -1793092, 1206908, -1650894, 1149106  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : E:\all_files\Maple_Data\redmaple.asc 
names       : redmaple 
values      : -2147483648, 2147483647  (min, max)

如何将brick.Tmax 中的所有规格(尺寸、crs、分辨率和范围)投影到red_raster,同时仍保留red_raster 的值?似乎两者是相互排斥的。

注意:为了简化我的问题,我从我的原始帖子中对我的问题进行了相当多的编辑,如果下面的 cmets 在当前上下文中令人困惑,我深表歉意。 (我删除了像中间人一样的光栅prodavg_rast)。

【问题讨论】:

  • 如果一个栅格与另一个栅格相比,您无法替换元数据并期望一切正常。这些步骤是元数据的分配,而不是转换。请报告源数据的 crs、分辨率、尺寸和范围。
  • @mdsumner 感谢您的及时回复!啊,是的,分配与转换。我已经编辑以在我的源数据上添加规范。
  • @RobertH 感谢您的指导。我已提出修改建议。

标签: r alignment ascii raster


【解决方案1】:

这两个栅格显然没有相同的范围。实际上是在不同的宇宙中(坐标参考系)。 brick.Tmax 具有角(经度/纬度)坐标:+proj=longlat +datum=WGS84 但是red_raster 显然没有给出extent : -1793092, 1206908, -1650894, 1149106。所以要一起使用这些数据,需要对两者之一进行转换(投影到另一个的坐标参考系中)。问题是我们不知道 red_raster 的 crs 是什么(esri ascii 文件不存储该信息!)。因此,您需要从您的数据源中找出它是什么,或者通过猜测所涵盖的区域和约定来找出它是什么。发现后,您可以执行以下操作:

library(raster)
tmax <- raster(nrow=222, ncol=462, xmn=-124.75, xmx=-67, ymn=25.125, ymx=52.875, crs="+proj=longlat +datum=WGS84")

red <- raster(nrow=140, ncol=150, xmn=-1793092, xmx=1206908, ymn=-1650894, ymx=1149106, crs=NA)
crs(red) <- "  ??????     " 

redLL <- projectRaster(red, tmax)

投影栅格需要时间。测试您是否计算出 crs 的一个好方法是转换一些可以显示事物是否对齐的多边形。

library(rgdal)
states <- shapefile('states.shp')
sr <- spTransform(states, crs(red)
plot(red)
plot(sr, add=TRUE)

【讨论】:

  • 太棒了!谢谢@RobertH。这非常有效。 ascii文件为alberts等面积圆锥,投影信息可查here
猜你喜欢
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2013-02-19
相关资源
最近更新 更多