моя цель - использовать скрипт, написанный на IDL, в python:
ИДЛ-код:
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 для Python Bridge.
В первом случае с помощью команды subprocess.call("idldirectory\idl.exe")
я могу открыть приглашение IDL в командной строке Windows. Но я не могу выполнить какую-либо функцию IDL, например простую 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 не работает, и у меня нет никаких решений.
Кто-нибудь может мне помочь? Спасибо. Лоренцо