我的目标是使用用 IDL 编写的脚本到 python 中:
IDL 代码:
PRO PS_GS
; Start the application
e = ENVI()
;Generate the roi from a vector file
; Open a vector file
file_vec = Filepath('Sic_Trapani.shp', ROOT_DIR = 'E:\mydirectory\')
vettore = e.OpenVector(file_vec)
; Get the task from the catalog of ENVITasks
Task_VtoR = ENVITask('VectorRecordsToROI')
; Define inputs
Task_VtoR.INPUT_VECTOR = vettore
; Define outputs
Task_VtoR.OUTPUT_ROI_URI = Filepath('roi_roi.xml', ROOT_DIR = 'E:\mydirectory\')
;Run the task
Task_VtoR.Execute
END
上面的代码,在 IDL 命令提示符下启动,可以正常工作。我想做一个python脚本:
- 选项 1) 启动上述 idl .pro 脚本
- 选项 2) 使用 IDL to Python Bridge sintax。
在第一种情况下,使用subprocess.call("idldirectory\idl.exe")
命令,我可以将 IDL 提示符打开到 Windows 命令提示符中。但我不能像简单的PRINT, 'hello'
.
在第二种情况下,我编写了以下 poython 代码:
import subprocess
from subprocess import call
import idlpy
from idlpy import IDL
e=IDL.ENVI()
msi_file = """IDL.Filepath(mydata.tif", ROOT_DIR = 'mydirectory')"""
msi_raster = IDL.OpenRaster(msi_file)
该指令e=IDL.ENVI()
正常工作,实际上是 Envi 设置启动。
该指令msi_file = """IDL.Filepath(mydata.tif", ROOT_DIR = 'mydirectory')"""
正常工作。
我的问题是 OpenRaster 指令。它是 ENVI 指令,而不是 IDL 指令。所以,IDL.OpenRaster 不起作用,我没有任何解决方案。
有人能帮我吗?谢谢你。洛伦佐