【IDL】IDL 8.5 中的 Python Bridge

IDL 8.5新增了IDL与Python互相调用的接口。在IDL代码中,可以访问任何Python模块,进行参数传递,或者调用built-in函数。同样的,在Python代码中,可以调用IDL功能,进行参数传递,或者操作IDL对象。

具备如下特性:

  • 支持Python 2.7+和Python 3.4+版本
  • 支持调用所有IDL程序和Python模块
  • 无缝调用:在代码编写上保持原有风格
  • 调用中所有输出参数被转换为标准输出格式
  • 自动处理代码字母大小写和行列优先顺序
  • 可以在任意语言中执行任意命令字符串
  • 自动将IDL数组转换为numpy数组
  • 调用程序或方法时,数据按地址进行传递
  • 可以双向传递主变量

安装方法

1) 第一步就是要安装IDL 8.5(这不废话么…⊙﹏⊙‖∣);

2) 安装Python,版本要求Python 2.7.x 或 3.4.x,并包含numpy library。如果已经安装Python和numpy,请无视此步骤。如果没有安装,可以安装Anaconda(超级简单,鄙人就是安装的这个东东),包含了Python Bridge需要的所有功能模块;

注:Anaconda下载地址http://www.continuum.io/downloads

注:尽量别安装多个版本的Python,之前我安装了2.7.10和3.4.3两个版本,结果在IDL中使用时提示如下信息:

% PYTHON::LOAD: Unable to find a valid Python installation.

当我卸载3.4.3后,才可以正常使用。

3) 最后就是配置环境变量。

计算机——属性——高级系统设置,选择“高级”选项卡,点击下方的“环境变量”按钮,然后添加如下两个系统变量:

PATH = ...;c:\Program Files\Exelis\IDLXX\bin\bin.x86_64;...

PYTHONPATH = c:\Program Files\Exelis\IDLXX\bin\bin.x86_64; C:\Program Files\Exelis\IDLXX\lib\bridges

注:其中XX表示IDL的版本,如85

 


图:添加的Path变量

 图:添加的PYTHONPATH变量

4) 然后就可以Happy的使用了。

示例代码

1) 第一种:IDL调用Python

IDL> ran=python.import('numpy.random')
% Loaded DLM: PYTHON27.

IDL> arr=ran.rand(100)
IDL> plt=python.Import('matplotlib.pyplot')
IDL> p=plt.plot(arr)
IDL> void=plt.show(block=0)

 运行结果如下图所示: 

图:IDL中调用Python 

2) 第二种:IDL中使用Python命令行

在IDL控制台中输入 >>>,然后回车,即可进入Python命令行模式,如下所示:

IDL> >>>
>>> import matplotlib.pyplot as plt
>>> import numpy.random as ran
>>> arr = ran.rand(100)
>>> p = plt.plot(arr)
>>> plt.show()
>>> 

运行效果与上图相同。

当不输入命令,直接回车时,退出Python命令行模式。

3) 第三种:Python调用IDL

启动Python,调用方法如下所示:

>>> from idlpy import IDL
>>> import numpy.random as ran
>>> arr = ran.rand(100)
>>> p = IDL.plot(arr, title='My Plot')
>>> p.color = 'red'
>>> p.save('myplot.pdf')
>>> p.close()


图:Python调用IDL

 

图:Python调用IDL绘图

图:Python调用IDL生成的PDF文档

posted @ 2022-06-15 11:12  ENVI-IDL技术殿堂  阅读(2109)  评论(0编辑  收藏  举报