【发布时间】:2019-11-28 03:23:44
【问题描述】:
如果我们有一个栅格,比如说一个国家的整数高程数据, 和一个多边形 shapefile,比如将那个国家的 300 个流域离散化,每个流域都有一个唯一的名称,我们如何最容易地为它们都获得这样的输出?
basinID, gridcellelev
a, 320
a, 321
a, 320
b, 17
b, 18
b, 19
最繁重的方法似乎是将单个 shapefile 过滤/转换为 300 个 shapefile,
将栅格 300 次裁剪为 300 个 uniqueID 栅格,将它们读回,为每个盆地生成单独的表格,然后将它们rbind()ing 在一起。
另一方面,理想的方法似乎是跳过文件生成,不保存 xy 数据,并仅使用一个栅格和一个 shapefile 创建同一个表 - 通过以某种方式选择盆地中的单元格,用盆地ID,创建一个表,丢失坐标,并不断迭代和附加该表,直到第 300 个盆地。
我不是在寻找任何统计数据,只是在某些标准剪辑方法中列出的网格单元标高的原始数据列表。我相信来自 ArcMap 的标准栅格剪辑属性表输出不是原始数据,而是像元的计数/频率。那也行。
我不知道最小限度地复制栅格和多边形 shapefile, 所以我很感激任何提示/库/函数/示例。作为起点:
library(tidyverse)
library(raster)
library(rgdal)
library(sf)
elev_raster <- raster("spain_elev_meters.tif") #integer raster
basins <- readOGR("spainbasins.shp", "spainbasins") %>% st_as_sf() #unique basin ID column: `basinID`
除非建议使用其他起始格式。
非常感谢任何提示!
【问题讨论】: