提取具有不同分辨率和范围的两个栅格中的土地覆盖数据
Extraction of land cover data in two rasters with different resolution and extent
我有三个光栅。 Raster1 是土地覆盖类型的土地覆盖文件。 Raster2 和 raster3 是显示变量 'NPP' 的栅格。如您所见,每个栅格都有不同的范围和分辨率。我想知道根据光栅 1 的土地覆盖率,光栅 2 和光栅 3 中的 NPP 是多少。然而,为了使所有栅格具有相同的范围和分辨率,并根据 raster1 中的土地覆盖 class 在 raster2 和 raster3 中找到 NPP,可以做些什么?
(我怎么知道应该为所有栅格选择哪种分辨率?)
> raster1
class : RasterLayer
dimensions : 2803, 5303, 14864309 (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333 (x, y)
extent : 60.85, 105.0417, 15.95833, 39.31667 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
source :XXXXX
names : landusemaskedme
values : 1, 12 (min, max)
raster2
class : RasterLayer
dimensions : 2336, 4419, 10322784 (nrow, ncol, ncell)
resolution : 0.01, 0.01 (x, y)
extent : 60.85, 105.04, 15.96, 39.32 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
source : memory
names : NPP
values : 0, 31.78096 (min, max)
> raster3
class : RasterLayer
dimensions : 47, 89, 4183 (nrow, ncol, ncell)
resolution : 0.5, 0.5 (x, y)
extent : 60.75, 105.25, 15.75, 39.25 (xmin, xmax, ymin, ymax)
crs : NA
source : memory
names : NPP
values : 0, 21.141 (min, max)
我可以看到您的栅格具有几乎相同的范围和坐标系,除了 raster3 没有任何参考系统 (crs: NA
)。首先,您需要具有相同范围和坐标参考系的栅格,然后您可以使用 raster
包中的 resample
函数,例如
library(raster)
#To have the same projection for raster3 as that of your base landcover class in raster1
newproj <- projection(raster1)
praster3 <- projectRaster(raster3, crs=newproj)
#Conversion of rasters into same extent
raster2_resampled <- resample(raster2, raster1, method='bilinear')
raster3_resampled <- resample(praster3, raster1, method='bilinear')
将更精细的分辨率栅格重新采样到更粗糙的分辨率总是更好,反之亦然,尽管可以按照您在问题中提出的要求完成。在您的情况下,raster1
具有更精细的分辨率 (0.008333333 x 0.008333333),其次是 raster2
(0.01 x 0.01)。 raster3
具有最粗糙的分辨率 (0.5 x 0.5)。所以,最好将所有栅格转换为raster3
的分辨率和范围。希望对你有所帮助。
我有三个光栅。 Raster1 是土地覆盖类型的土地覆盖文件。 Raster2 和 raster3 是显示变量 'NPP' 的栅格。如您所见,每个栅格都有不同的范围和分辨率。我想知道根据光栅 1 的土地覆盖率,光栅 2 和光栅 3 中的 NPP 是多少。然而,为了使所有栅格具有相同的范围和分辨率,并根据 raster1 中的土地覆盖 class 在 raster2 和 raster3 中找到 NPP,可以做些什么?
(我怎么知道应该为所有栅格选择哪种分辨率?)
> raster1
class : RasterLayer
dimensions : 2803, 5303, 14864309 (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333 (x, y)
extent : 60.85, 105.0417, 15.95833, 39.31667 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
source :XXXXX
names : landusemaskedme
values : 1, 12 (min, max)
raster2
class : RasterLayer
dimensions : 2336, 4419, 10322784 (nrow, ncol, ncell)
resolution : 0.01, 0.01 (x, y)
extent : 60.85, 105.04, 15.96, 39.32 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
source : memory
names : NPP
values : 0, 31.78096 (min, max)
> raster3
class : RasterLayer
dimensions : 47, 89, 4183 (nrow, ncol, ncell)
resolution : 0.5, 0.5 (x, y)
extent : 60.75, 105.25, 15.75, 39.25 (xmin, xmax, ymin, ymax)
crs : NA
source : memory
names : NPP
values : 0, 21.141 (min, max)
我可以看到您的栅格具有几乎相同的范围和坐标系,除了 raster3 没有任何参考系统 (crs: NA
)。首先,您需要具有相同范围和坐标参考系的栅格,然后您可以使用 raster
包中的 resample
函数,例如
library(raster)
#To have the same projection for raster3 as that of your base landcover class in raster1
newproj <- projection(raster1)
praster3 <- projectRaster(raster3, crs=newproj)
#Conversion of rasters into same extent
raster2_resampled <- resample(raster2, raster1, method='bilinear')
raster3_resampled <- resample(praster3, raster1, method='bilinear')
将更精细的分辨率栅格重新采样到更粗糙的分辨率总是更好,反之亦然,尽管可以按照您在问题中提出的要求完成。在您的情况下,raster1
具有更精细的分辨率 (0.008333333 x 0.008333333),其次是 raster2
(0.01 x 0.01)。 raster3
具有最粗糙的分辨率 (0.5 x 0.5)。所以,最好将所有栅格转换为raster3
的分辨率和范围。希望对你有所帮助。