在尝试将SpatRaster裁剪到特定SpatVector后,crop SpatRaster没有值

umuewwlo  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(192)

我想裁剪一些我从mrlc获得的树冠覆盖数据。我下载了美国所有的林冠覆盖数据,但我真的只对威斯康星州和伊利诺伊州感兴趣。我有一个伊利诺伊州和威斯康星州边界的SpatVector,ilwi
这是ilwi

ilwi
 #class       : SpatVector 
 #geometry    : polygons 
 #dimensions  : 2, 6  (geometries, attributes)
 #extent      : -92.8854, -86.96771, 36.98682, 46.95248  (xmin, xmax, ymin, ymax)
 #coord. ref. : lon/lat WGS 84 (EPSG:4326) 
 #names       :   FID Program State_Code State_Name Flowing_St FID_1
 #type        : <int>   <chr>      <chr>      <chr>      <chr> <int>
 #values      :    14    ACES         IL   ILLINOIS          F   932
 #                 50  WI-ESR         WI  WISCONSIN          F   968

我将林冠覆盖数据转换为SpatRaster

cancov
#class       : SpatRaster 
#dimensions  : 104424, 161190, 1  (nrow, ncol, nlyr)
#resolution  : 30, 30  (x, y)
#extent      : -2493045, 2342655, 177285, 3310005  (xmin, xmax, ymin, ymax)
#coord. ref. : NAD83 / Conus Albers (EPSG:5070) 
#source      : nlcd_tcc_conus_2019_v2021-4.tif 
#color table : 1 
#name        : Layer_1 
#min value   :       0 
#max value   :     254

现在,我只想得到威斯康星州和伊利诺伊州的冠层覆盖数据,所以我尝试了作物函数,但得到了一个错误

cropcancov <- crop(cancov, ilwi, mask=TRUE)
#Error: [crop] SpatRaster has no values

此外,我不确定这是否是问题,但坐标参考系统是不同的SpatVectorSpatRaster。而且,当我这么做的时候,我得到了一个警告

cancov <- terra::rast("nlcd_tcc_conus_2019_v2021-4.tif") 
#Warning message:
#In class(object) <- "environment" :
# Setting class(x) to "environment" sets attribute to NULL; 
# result will no longer be an S4 object

按照建议,我运行了以下代码:

pilwi <- project (ilwi, cancov)

pilwi
# class       : SpatVector 
# geometry    : polygons 
# dimensions  : 2, 6  (geometries, attributes)
 extent      : 242859.9, 730265.2, 1570763, 2673050  (xmin, xmax, ymin, ymax)
# coord. ref. : NAD83 / Conus Albers (EPSG:5070) 
# names       :   FID Program State_Code State_Name Flowing_St FID_1
# type        : <int>   <chr>      <chr>      <chr>      <chr> <int>
# values      :    14    ACES         IL   ILLINOIS          F   932
#                  50  WI-ESR         WI  WISCONSIN          F   968

crop(cancov, pilwi)
#class       : SpatRaster                  
#dimensions  : 36743, 16247, 1  (nrow, ncol, nlyr)
#resolution  : 30, 30  (x, y)
#extent      : 242865, 730275, 1570755, 2673045  (xmin, xmax, ymin, ymax)
#coord. ref. : NAD83 / Conus Albers (EPSG:5070) 
#source      : spat_HGUbU1BYXynbxDC_12144.tif 
#color table : 1 
#name        : Layer_1 
#min value   :       0 
#max value   :     254
j5fpnvbx

j5fpnvbx1#

SpatRaster和SpatVector应具有相同的坐标参考系。他们没有。栅格具有“NAD 83/ Conus阿尔伯斯(EPSG:5070)”,而矢量具有“lon/lat WGS 84(EPSG:4326)”。
您可以投影SpatVector以使它们匹配(尽可能避免投影光栅数据)。

library(terra)
cancov <- terra::rast("nlcd_tcc_conus_2019_v2021-4.tif") 
pilwi <- project(ilwi, cancov)
cropcancov <- crop(cancov, pilwi, mask=TRUE)

In class(object) <- "environment" :等警告与此无关。这可能是因为您正在将旧会话加载到R中。可以用

unlink(".RData")

然后关闭R并且不保存会话。如果您使用R-Studio,则可以执行Session/Terminate R

相关问题