Re: IDL-Python Bridge: problem with the ENVI function. [message #92917 is a reply to message #92916] |
Wed, 23 March 2016 07:24   |
Helder Marchetto
Messages: 520 Registered: November 2011
|
Senior Member |
|
|
Hi,
regarding Option 1:
Try compiling your file:
resolve_routine, 'PS_GS', /compile_full_file, /either
resolve_all
save, /routines, 'yourDirectory\ps_gs.sav'
Then try calling
subprocess.call("idldirectory\idlrt.exe yourDirectory\ps_gs.sav")
This works on my pc. I don't have Envi to test it though... I made a simple file with just
p = plot(/test)
inside and it works.
I didn't test the call from python, but it works from the command line.
Cheers,
Helder
On Wednesday, March 23, 2016 at 11:46:29 AM UTC, lore...@gmail.com wrote:
> Hi all,
> my aim is to use a script written in IDL, into python:
>
> IDL code:
>
> 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
>
> The above code, launched into IDL command prompt, works correctly.
> I want make a python script that:
>
> - option 1) launch the above idl .pro script
> - option 2) use the IDL to Python Bridge sintax.
>
> In the first case, using the `subprocess.call("idldirectory\idl.exe")` command, i can open the IDL prompt into the windows command prompt. But i can not execute any IDL function like a simple `PRINT, 'hello'`.
>
> In the second case, i write the following poython code:
>
> 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)
>
> The instruction `e=IDL.ENVI()` work correctly, in fact an Envi setion starts.
>
> The instruction `msi_file = """IDL.Filepath(mydata.tif", ROOT_DIR = 'mydirectory')"""` work correctly.
>
> My problem is with the OpenRaster instruction. It is an ENVI instruction and not an IDL instruction. So, IDL.OpenRaster does not work, and i do not have any solutions.
>
> I have modified the code like:
> msi_raster=IDL.ENVI().OpenRaster(msi_file)
> The result is the following error message:
> Impossible find the access point
> ??0LTISceneBuffer@LizardTech@@QEAA@AEBVLTIPixel@1@IIPEAPEAX@ Z
> into the dynamic link library lti_DSDK.dll
>
> Googling i have found this site:
> Malware scan of gdal110.dll
> Any help or suggestion? Thanks
|
|
|