我的目标是在python中使用IDL编写的脚本:
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脚本:
在第一种情况下,使用subprocess.call("idldirectory\idl.exe")
命令,我可以在windows命令提示符中打开IDL提示符。但是我不能像简单的PRINT, 'hello'
那样执行任何IDL函数。在
在第二种情况下,我编写以下poython代码:
^{pr2}$指令e=IDL.ENVI()
工作正常,实际上环境启动。在
指令msi_file = """IDL.Filepath(mydata.tif", ROOT_DIR = 'mydirectory')"""
工作正常。在
我的问题是OpenRaster指令。它是ENVI指令而不是IDL指令。所以,IDL.OpenRaster不起作用,我也没有任何解决办法。在
有人能帮我吗? 谢谢您。 洛伦佐
你到一半了。出错的地方是将OpenRaster方法作为IDL类的静态方法调用。这不是你想做的。要使用OpenRaster,实际上需要在您创建的ENVI对象上调用该方法。例如:
一旦您创建了对象
^{pr2}$e
,它的行为与任何其他python对象一样。i、 e.您可以调用它的方法、访问属性等。例如,要将文件加载到ENVI显示中,您可以执行以下操作:IDL
类只是一个接口,允许您将任何IDL函数作为IDL
类上的静态方法调用。但是一旦实例化了一个对象,在本例中是e
,请像对待其他对象一样使用它。在相关问题 更多 >
编程相关推荐