Terra extractRange()未遵循bind=T与ID=T预期行为的技术问询
关于extractRange()函数的两个行为问题
1. ID=T参数行为与文档描述不符
按照文档说明,当设置ID=T时,返回结果的第一列应为y的ID(记录号),但实际运行时,仅将返回列表的元素名称设为ID值,并未在结果中新增ID列:
实际运行代码及输出
extractRange(x= rdat ,y = vectdat[1],first = 1, last=5,na.rm=T) [[1]] 2022-01-01 2022-01-02 2022-01-03 2022-01-04 2022-01-05 1 1.5029 26.5306 0.3029 0 0 Warning message: [extract] transforming vector data to the CRS of the raster extractRange(x= rdat ,y = vectdat[1],first = 1, last=5,na.rm=T,ID=T) $1 2022-01-01 2022-01-02 2022-01-03 2022-01-04 2022-01-05 1 1.5029 26.5306 0.3029 0 0
预期输出
extractRange(x= rdat ,y = vectdat[1],first = 1, last=5,na.rm=T) [[1]] ID 2022-01-01 2022-01-02 2022-01-03 2022-01-04 2022-01-05 1 1 1.5029 26.5306 0.3029 0 0
2. bind=T参数未实现绑定提取值与空间向量列的功能
传递bind=T时,本应和terra::extract()的同名参数逻辑一致——将y的属性列与提取的x值列绑定,但实际仅保留y中first至last范围的列,完全未包含x的提取值:
实际运行代码及输出
extractRange(x= rdat ,y = vectdat[1],first = 1, last=5,na.rm=T,ID=T,bind=T) $1 class : SpatVector geometry : points dimensions : 1, 5 (geometries, attributes) extent : -75.29528, -75.29528, 40.12443, 40.12443 (xmin, xmax, ymin, ymax) coord. ref. : lon/lat WGS 84 (EPSG:4326) names : establishment_name ein company_name street_address city type : values : AristaCare at Meado~ 204755042 AristaCare at Meado~ 845 Germantown Pike Plymouth Meeting
预期输出(参考terra::extract的行为)
terra::extract(x = rdat[[1:5]],y= vectdat[1],bind=T,na.rm=T,ID=T) class : SpatVector geometry : points dimensions : 1, 47 (geometries, attributes) extent : -75.29528, -75.29528, 40.12443, 40.12443 (xmin, xmax, ymin, ymax) coord. ref. : lon/lat WGS 84 (EPSG:4326) names : establishment_id establishment_name ein company_name street_address city state zip_code naics_code naics_year (and 37 more) type : values : 41940 AristaCare at ~ 204755042 AristaCare at ~ 845 Germantown~ Plymouth Meeting PA 1.946e+04 623110 2022
核心疑问
根据文档,extractRange()是否应该支持将空间向量的列绑定到提取值的输出中?
内容的提问来源于stack exchange,提问作者W. Kessler
相关产品推荐
相关产品推荐

