私の目的は、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 シンタックスを使用します。
最初のケースでは、subprocess.call("idldirectory\idl.exe")
コマンドを使用して、IDL プロンプトを Windows コマンド プロンプトで開くことができます。しかし、単純な のような IDL 関数を実行することはできませんPRINT, 'hello'
。
2 番目のケースでは、次の 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 が機能せず、解決策がありません。
誰かが私を助けることができますか?ありがとうございました。ロレンツォ