使用terra包rasterize函数栅格化点要素分类值时被转为数值的问题求助
使用terra包rasterize函数栅格化点要素分类值时被转为数值的问题求助
我之前能正常把带分类属性的点要素栅格化,但现在代码跑出来的结果完全不对——原本的字符型分类值(比如'a'、'b')全都被转换成了数值(0、5这类),直接丢失了分类信息。下面是我整理的可复现代码,还有运行后的结果,麻烦帮忙排查下问题:
可复现代码
library(sf) library(terra) library(tibble) points <- tibble::tribble( ~x,~y, ~cat, -34.125, -58.162,'a', -34.225, -58.462,'b', -34.325, -58.362,'c', -34.425, -58.662,'d', -34.525, -58.762,'e', -34.625, -58.862,'f' ) points <- st_as_sf(points, coords = c("x", "y"), crs = 4326) polygons <- st_buffer(points, dist = 0.1) v1 <- vect(points) v2 <- vect(polygons) r <- rast(v1, res=0.1) # 尝试栅格化点要素 rasterize(v1, r, 'cat') # 尝试栅格化缓冲后的多边形 rasterize(v2, r, 'cat')
运行结果
不管是栅格化点还是缓冲多边形,得到的栅格结果都是这样的(分类信息被替换成了数值):
class : SpatRaster dimensions : 7, 5, 1 (nrow, ncol, nlyr) resolution : 0.1, 0.1 (x, y) extent : -34.625, -34.125, -58.862, -58.162 (xmin, xmax, ymin, ymax) coord. ref. : lon/lat WGS 84 (EPSG:4326) source(s) : memory name : cat min value : 0 max value : 5
我想要的是栅格能保留原本的字符型分类('a'到'f'),而不是被转成数值,请问哪里出错了?
备注:内容来源于stack exchange,提问作者Florencia Grattarola
相关产品推荐
相关产品推荐

