如何从R中的CORINE中提取葡萄园土地覆盖?

问题描述 投票:0回答:1

我正在尝试通过从 CORINE Land Cover 下载的 TIFF 中选择葡萄园类别,使用 R 获取有关葡萄园土地利用的信息。

corine <- rast(paste(dir$land, "U2018_CLC2018_V2020_20u1.tif", sep = "/"))
unique_values <- unique(corine)
print(unique_values) #15 vineyards 
vineyard <- corine==15

我不确定这一步。此外,我上传了ESRI shapefile(具有7901个特征和12个字段的简单特征集合,几何类型:MULTIPOLYGON尺寸:XY边界框:xmin:313279.3 ymin:3933683 xmax:1312016 ymax:5220292投影CRS:WGS 84 / UTM区域32N)与管理边界和温度源自 NetCDF 扩展中的哥白尼。因为我需要获得意大利每个城市的温度,并根据葡萄园的存在进行加权,以更好地捕捉气候对葡萄园的影响。

fname <- paste(dir$shape, "mapEU.shp", sep="/")
shp <- st_read(fname)

fname <- paste(dir$tm, "1979", "tm_19790101.nc", sep="/")
mask <- raster(fname)

# harmonize shape map and temperature layer
shp <-  shp %>% st_transform(crs = mask@crs)
st_crs(shp)

# Change extent in vineyard
e <- extent(mask)
vineyardArea <- crop(vineyard, e)

但是我得到了错误:

[crop] extents do not overlap

可能是因为葡萄园是 SpatRaster,而 mask 是 RasterLayer。如何解决这个问题?然后我会继续做类似的事情......

# Aggregate vineyard Spatialraster up to 0.1 deg, the resolution of the ERA5 data
vineyardArea <- resample(vineyardArea, mask, method="bilinear")

预先感谢您的帮助!

r geospatial raster
1个回答
0
投票

我假设你明白了

[裁剪]范围不重叠

因为范围不重叠。看看吧

fname <- paste(dir$tm, "1979", "tm_19790101.nc", sep="/")
mask <- rast(fname)
ext(mask)
ext(vinyard)
mask
vinyard

可能其中一个有 lonlat CRS,而另一个没有。 如果没有“最小的、独立的、可重现的例子”(这是提出 R 问题时的期望),就很难为您提供更多帮助;或者至少有一些证据。根据上述内容,您也许可以编辑您的问题。 对于多边形你可以做

fname <- paste(dir$shape, "mapEU.shp", sep="/") vct <- vect(fname) vct <- project(vct, vinyards)

© www.soinside.com 2019 - 2024. All rights reserved.