使用 rpy2 从 Python 调用 R writeRaster

问题描述 投票:0回答:1

我在 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

python rpy2 r-raster
1个回答
0
投票

我通过从 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 表示法书写。

© www.soinside.com 2019 - 2024. All rights reserved.