【IDL) 64位IDL中调用32位功能的方法
IDL中某些功能只能在32位下使用,但是现在更多的会使用64位IDL,如果频繁的切换IDL会很麻烦。
可以查看下面的网址了解ENVI/IDL产品功能对操作系统的要求:
比如我们在64位下IDL写了一个功能,但是需要用到DXF格式的数据。而IDL提供的idlffdxf只能支持32位系统,在64位IDL下运行下面的代码会给出平台不兼容的提示。
IDL> heart=obj_new('idlffdxf',filepath('heart.dxf',subdir=['data']))
% OBJ_NEW: Dynamically loadable module is unavailable on this platform: DXF.
% Execution halted at: $MAIN$
我们可以在64位IDL中启动一个32位进程,代码如下:
IDL> b = idl_idlbridge(ops = 32)
注:当我们使用32位IDL时,不能通过此函数启动64位IDL进程。
下面可以编写代码执行DXF格式数据读取功能。
PRO test_idlffdxf
;启动32位进程
b=idl_idlbridge(ops=32)
;使用idlffdxf读取心脏数据
command="heart=obj_new('idlffdxf',"+ $
"filepath('heart.dxf',subdir=['examples','data']))"
b.execute,command
b.execute,"heartTypes=heart.getcontents()"
b.execute,"tissue=heart.getentity(heartTypes[1])"
b.execute,"connectivity=*tissue.connectivity"
b.execute,"vertices=*tissue.vertices"
;从32位IDL进程中获取心脏数据到64位IDL
vertices=b.getvar('vertices')
connectivity=b.getvar('connectivity')
;对象图形法显示心脏三维模型
oPoly=idlgrpolygon(vertices,poly=connectivity,$
style=2,color=!COLOR.RED, /shading)
xobjview,oPoly,SCALE=0.7,title='Heart'
xobjview_rotate, [1, 0, 0], -70
END
运行效果,一颗红心送给你~~~

注:利用idl_idlbridge同样可以实现多线程并行处理。

本文来自地理遥感生态网平台www.gisrs.cn,作者:地理遥感生态网平台,转载请注明原文链接:https://www.cnblogs.com/gisrs365/p/18271220
浙公网安备 33010602011771号