Presentation is loading. Please wait.

Presentation is loading. Please wait.

第十二章 RS-GIS混合编程 本章讨论三个问题:

Similar presentations


Presentation on theme: "第十二章 RS-GIS混合编程 本章讨论三个问题:"— Presentation transcript:

1 第十二章 RS-GIS混合编程 本章讨论三个问题:
第一个是IDL编程环境下,调用ENVI,借助IDL的图像处理函数和ENVI的图像处理函数实现遥感图像处理; 第二个是以外部开发语言,如C#、VB.net等为开发平台,调用IDL和ENVI的图像处理函数实现图像处理(包括使用IDLDrawWidget控件的有界面编程和使用COM_IDL_CONNECT控件的无界面编程); 第三个是以外部开发语言,如C#、VB.net等为开发平台,调用IDL和ArcgisEngine实现RS-GIS混合编程。

2 第十二章 RS-GIS混合编程 12.1 IDL调用ENVI编程
IDL调用ENVI编程,需解决图像读写、图像处理、事件传递、图像显示的问题。其中,IDL调用ENVI函数后,可很好的解决图像读写和图像处理问题。由于编程过程中做事件传递,需要使用Widget控件,而图像输出可采IDL的直接图形法(用tv、tvscl命令)或对象图形法(IDLgrImage对象)。因此,需要解决Widget控件与直接图形法、Widget控件与对象图形法间的值传递问题。

3 第十二章 RS-GIS混合编程 12.1.1 基于ENVI-IDL的直接图形法编程
基于ENVI-IDL的直接图形法编程中,使用widget_base、widget_button、widget_text、widget_label、widget_droplist、widget_table、widget_draw等控件创建界面;IDL调用ENVI函数后,实现图像读写和图像处理。图像输出时,把widget_draw组件看成直接图形法下的window窗口,使用wset命令确定图像输出目标为widget_draw组件,使用tv或tvscl命令输出图像。

4 第十二章 RS-GIS混合编程

5 第十二章 RS-GIS混合编程

6 第十二章 RS-GIS混合编程 12.1.2基于ENVI-IDL的对象图形法编程
基于ENVI-IDL的对象图形法编程中,使用widget_base、widget_button、widget_text、widget_label、widget_droplist、widget_table、widget_draw等控件创建界面;IDL调用ENVI函数后,实现图像读写和图像处理。图像输出时,创建IDLgrImage、IDLgrModel、IDLgrView对象(不创建IDLgrWindow对象)。把widget_draw组件看成对象图形法下的IDLgrWindow对象;将IDLgrView对象添加到widget_draw组件,最后绘图到widget_draw控件。

7 第十二章 RS-GIS混合编程

8 第十二章 RS-GIS混合编程 程序编写中,假设创建的widget_draw名为wdraw,图像数组名字为data。使用对象图形法,将图像输出到widget_draw的关键语句为(前后语句略): ENVI>image=obj_new('idlgrimage',data) ENVI>model=obj_new('idlgrmodel') ENVI>view=obj_new('idlgrview') ENVI>wdraw=widget_draw() ENVI>model->add,image ENVI>view->add,model ENVI>widget_control,wdraw,get_value=draw1 ENVI>draw1.draw,view

9 第十二章 RS-GIS混合编程

10 第十二章 RS-GIS混合编程 12.2其它语言通过IDLDrawWidget访问ENVI-IDL

11 第十二章 RS-GIS混合编程

12 第十二章 RS-GIS混合编程

13 第十二章 RS-GIS混合编程 12.2.1 VB6访问IDL
VB6在64位操作系统下安装时,忽略提示的错误信息就可成功安装。VB通过调用idldraw3.ocx控件访问IDL。启动VB6进入主界面后,在工具栏空白处点击右键,选择【添加部件】项,打开部件对话框。下拉选择【IDLDrawX3 ActiveX Control Module】项,就调用了\idl8x\bin\bin.x86\idldrawx3.ocx。图12.6是VB6企业版调用IDLDrawWidget控件界面。

14 第十二章 RS-GIS混合编程

15 第十二章 RS-GIS混合编程

16 第十二章 RS-GIS混合编程 VB6调用IDL示例
【例12.4】以VB6.0企业版为开发平台,调用idldraw3.ocx控件,读入tiff格式DEM数据,使用IDL的surface命令实现三维地形表面绘制。 分析:VB6.0调用idldraw3.ocx控件实现和IDL的连接,读入tiff格式数据需使用ENVI函数;三维地形表面绘制使用IDL的surface命令。

17 第十二章 RS-GIS混合编程

18 第十二章 RS-GIS混合编程

19 第十二章 RS-GIS混合编程 12.2.2 VB.net访问IDL
打开VS2010,顺序选择【新建项目】-【VisualBasic】-【Windows窗体应用程序】,创建WindowsApplication应用程序(默认名字WindowsApplication1)。在工具栏上选择【组件】,右键选择【添加项】,在【选择工具箱】界面点击【COM组件】,添加对IDLDrawWidget控件的引用。

20 第十二章 RS-GIS混合编程

21 第十二章 RS-GIS混合编程 【例12.5】在Form1上添加IDLDrawWidget控件,在Form1的Load事件里编写代码,使用DEM绘制等高线。要求在图像上显示地图坐标。 示例程序是本章的vb.net\WindowsApplication1\WindowsApplication1.sln,程序运行结果如图12.9所示。IDLDrawWidget控件名为AxIDLDrawWidget1。

22 第十二章 RS-GIS混合编程

23 第十二章 RS-GIS混合编程 12.2.3 C#访问IDL
打开VS2010,选择【新建项目】-【Visual C#】-【Windows窗体应用程序】,创建WindowsApplication应用程序。在工具栏上选择【组件】,右键选择【添加项】,在【选择工具箱】界面点击【COM组件】,添加对IDLDrawWidget控件的引用。

24 第十二章 RS-GIS混合编程

25 第十二章 RS-GIS混合编程 1、C#执行IDL语句
C#调用IDLDrawWidget控件执行IDL语句时,常用的是IDLDrawWidget控件的ExecuteStr方法(其它外部语言也一样)。使用时,在ExecuteStr(“”)的“”里书写IDL语句,但这种书写方法效率不高。 2、C#调用IDL直接图形法的pro文件 先在IDL下使用直接图形法书写pro文件。IDL语句输出图像时,不使用“Window”语句创建输出界面,而是直接输出。

26 第十二章 RS-GIS混合编程

27 第十二章 RS-GIS混合编程 3、C#调用IDL对象图形法的pro文件
先在IDL下使用对象图形法书写pro过程文件。输入参数为C#中IDLDrawWidget控件DrawID,不创建IDLgrWindow对象(使用IDLDrawWidget控件代替IDLgrWindow对象)。图12.12是C#调用IDL对象图形法的pro文件流程图。调用pro文件时,先添加IDLDrawWidget控件;然后编译pro文件;最后使用调用IDL过程名的形式调用pro文件,输入参数为IDLDrawWidget控件DrawID。

28 第十二章 RS-GIS混合编程

29 第十二章 RS-GIS混合编程 【例12.6】使用C#实现对IDL直接图形法和对象图形法pro文件的调用。
IDL文件:chapter12\direct_graphic.pro, chapter12\object_graphic.pro。 C#文件:chapter12\C#\WindowsFormsApplication1\WindowsFormsApplication1.sln。

30

31 第十二章 RS-GIS混合编程

32 第十二章 RS-GIS混合编程 12.3其它语言通过COM_IDL_CONNECT访问ENVI-IDL
IDL的com_idl_connect组件能够提供其它语言对ENVI-IDL的无界面访问。表12.6是com_idl_connect组件的方法

33 第十二章 RS-GIS混合编程 12.3.1 C#通过COM_IDL_CONNECT访问ENVI-IDL
启动VS2010,选择项目类型为【Visual C#】,选择模板为Windows窗体应用程序”。进入主界面后,指定项目名称为“Windows Application”,存储路径用默认值。进入主界面后,在【解决方案资源管理器】界面的“Windows Application”项上点击右键,选择【添加引用】项。进入【COM】选项卡(图12.15),选择“Com_IDL_ConnectLib 1.0 Type Library”

34 第十二章 RS-GIS混合编程

35 第十二章 RS-GIS混合编程

36 第十二章 RS-GIS混合编程

37 第十二章 RS-GIS混合编程

38 12.3.2 VB.net通过COM_IDL_CONNECT访问ENVI-IDL
VB.net连接com_idl_connect访问ENVI-IDL时,构建界面,添加引用的操作和C#下操作一样,但是对象创建时的代码有差别。语句为: Imports COM_IDL_connectLib Dim COMIDL1 As COM_IDL_connectLib.COM_IDL_connect = _ New COM_IDL_connectLib.COM_IDL_connect COMIDL1.CreateObject(0, 0, 0) COMIDL1.ExecuteString("envi,/restore_base_save_files") COMIDL1.ExecuteString("envi_batch_init") COMIDL1.ExecuteString("device,decomposed=1") COMIDL1.ExecuteString("WINDOW,0,TITLE='VB.NET使用COM调用ENVI-IDL'")

39 第十二章 RS-GIS混合编程 12.4 ENVI-IDL与Arcgis Engine混编
Arcgis Engine是ESRI为开发嵌入式GIS和独立运行的GIS桌面端应用程序而推出的二次开发组件库。安装Visual Studio 2010和Arcgis10 Desktop后,继续安装Arcobjects SDK For .Net Framework10和Arcgis Engine 10 Runtime,最后配置License。

40 第十二章 RS-GIS混合编程

41 第十二章 RS-GIS混合编程

42 第十二章 RS-GIS混合编程

43 第十二章 RS-GIS混合编程

44 第十二章 RS-GIS混合编程

45 第十二章 RS-GIS混合编程

46 第十二章 RS-GIS混合编程

47 第十二章 RS-GIS混合编程

48 第十二章 RS-GIS混合编程

49 第十二章 RS-GIS混合编程

50 第十二章 RS-GIS混合编程 12.4.2 VB.net调用ArcgisEngine与ENVI-IDL
为方便用户使用,VS2010为用户创建了调用ArcgisEngine的默认界面。在VB.net调用ArcgisEngine构建基本界面的基础上,还需添加对ENVI-IDL的引用。根据程序设计的需要,可添加有界面的widget_draw组件或无界面的com_idl_connect组件实现对ENVI-IDL的调用。

51 第十二章 RS-GIS混合编程

52 第十二章 RS-GIS混合编程

53 第十二章 RS-GIS混合编程

54 第十二章 RS-GIS混合编程

55 第十二章 RS-GIS混合编程

56 第十二章 RS-GIS混合编程

57 第十二章 RS-GIS混合编程

58 第十二章 RS-GIS混合编程

59 第十二章 RS-GIS混合编程

60 第十二章 RS-GIS混合编程

61 第十二章 RS-GIS混合编程

62 第十二章 RS-GIS混合编程

63 第十二章 RS-GIS混合编程

64 第十二章 RS-GIS混合编程

65 第十二章 RS-GIS混合编程


Download ppt "第十二章 RS-GIS混合编程 本章讨论三个问题:"

Similar presentations


Ads by Google