我在 Python 代码中使用 R 包来导入、处理和保存 GeoTIFF 栅格。导入和处理工作正常,但我很难再次保存光栅文件。这是我正在运行的代码的简化版本:
import rpy2.rinterface as ri
import rpy2.robjects as rob
import rpy2.robjects.packages as rpackages
raster = rpackages.importr('raster')
r_raster = raster.raster(geotiff_input_path)
# r_raster = process_raster(r_raster)
raster.writeRaster(r_raster, geotiff_output_path, overwrite=True)
但是,代码失败并显示
AttributeError: module 'raster' has no attribute 'writeRaster'
。
我似乎误解了如何正确调用
writeRaster
。
我通过从 R 对象中调用 writeRaster 函数来修复它:
import os
from rpy2.robjects.packages import importr
import rpy2.robjects as robjects
os.environ['R_HOME'] = r'C:\Program Files\R\R-4.2.3'
raster = importr('raster')
robjects.globalenv["rasterpath"] = rasterpath
robjects.globalenv["raster"] = raster
robjects.r('writeRaster(raster, rasterpath, format="GTiff", overwrite=TRUE)')
使用 robjects.globalenv[''] 函数声明 robject 后,您可以将它们用作实际局部变量的对象。因此,您可以在字符串中使用 R 表示法书写。