R语言如何将raster栅格转为dataframe后再转回栅格格式?
R语言raster包处理后数据框转回GeoTIFF方法
核心是复用你最初读取的原始栅格作为模板,直接继承空间参考、坐标范围、像元大小等信息,不用手动配置,避免空间错位问题。
你完成重分类等数据框操作后,按以下逻辑执行即可:
- 确认处理后的数据框行顺序和
as.data.frame输出的原始顺序完全一致,处理后的数值向量长度要和原栅格总像元数完全匹配 - 用
setValues方法将处理后的数值写入原栅格模板 - 用
writeRaster输出为GeoTIFF格式,可直接在QGIS中打开
示例代码(承接你提供的代码片段):
# 假设你已经对rdf_ndvi完成重分类操作,新增了重分类后的列ndvi_reclass # 将处理后的数值赋值回原栅格模板,自动继承所有空间属性 r_ndvi_reclass <- setValues(r_ndvi, rdf_ndvi$ndvi_reclass) # 输出为GeoTIFF文件 writeRaster( x = r_ndvi_reclass, filename = paste0(path, "ndvi_reclass.tif"), format = "GTiff", overwrite = TRUE # 覆盖已有同名文件,不需要可删除 )
注意事项
- 不要随意对原始转换得到的
rdf_ndvi做排序、过滤行等打乱行顺序的操作,如果确实做了拆分处理,必须先按原始像元顺序拼接回完整长度的向量再写入,否则输出的栅格会出现空间错位 - 如果需要输出多波段栅格,可分别将每个处理后的列赋值为单波段栅格,再用
stack()函数拼接为栅格栈后统一写入 - 输出的GeoTIFF默认保留原栅格的投影信息,不需要额外配置,QGIS可以直接识别读取
内容的提问来源于stack exchange,提问作者hmnoidk
相关产品推荐
相关产品推荐

