PIE SDK与IDL算法结合说明文档
1.功能简介
IDL是一门简单易用的科学计算和可视化语言,包含大量的图形图像处理函数,尤其是同ENVI结合集成了该软件的大量功能,因此被广泛用于遥感、地信领域。
本示例程序实现了IDL算法与PIESDK集成功能,使得在PIE中也可以调用IDL写的算法(以IDL图像裁剪算法为例)。
2. 功能实现说明
2.1. IDL算法
IDL写的算法可以是.pro文件也可以是.sav文件,算法如果使用到ENVI函数,需要安装ENVI,另外还需要调用初始化ENVI批处理方法(详见示例代码)。
2.2. 实现思路及原理说明
本示例实现方法主要使用Interop.COM_IDL_connectLib组件,直接添加引用即可(若安装IDL,也可以在添加引用->Com组件中找到它)。需要注意的是.pro和.sav的初始化方法不同,.pro文件使用.complie命令编译后才能使用该函数;而.sav文件需要先restore,再调用(oCom.ExecuteString("restore 'idlfunction.sav'");)。
第一步 |
添加Interop.COM_IDL_connectLib组件引用 |
第二步 |
创建COM_IDL_connectClass对象,并用CreateObject()初始化 |
第三步 |
若输入参数需要使用ENVI函数,则需要初始化ENVI批处理 |
第四步 |
编译算法,使用.compile/restore命令 |
第五步 |
构造算法需要的参数 |
第六步 |
利用ExecuteString()方法执行算法 |
2.3 . 核心接口与方法
接口/类 |
方法 |
说明 |
COM_IDL_connectClass |
CreateObject() |
构造IDL连接对象 |
COM_IDL_connectClass |
ExecuteString() |
执行IDL命令行命令 |
2.4. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/14.SDK拓展开发/ 01PIESDK与IDL算法结合/ BlendWithIDL |
数据路径 |
百度云盘地址下/PIE示例数据/栅格数据/ |
视频路径 |
百度云盘地址下/PIE视频教程/14.SDK拓展开发/01PIESDK与IDL算法结合.avi |
示例代码 |
|
1 /// <summary> 2 /// 图像裁剪 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void button_run_Click (object sender, EventArgs e) 7 { 8 string inFile = textBox_srcImg.Text; 9 string extFile = textBox_ext.Text; 10 string outFile = textBox_dst.Text; 11 12 COM_IDL_connectClass oCom = new COM_IDL_connectClass(); 13 oCom.CreateObject(0, 0, 0); 14 15 //若依赖envi,先初始化ENVI批处理 16 oCom.ExecuteString("COMPILE_OPT idl2"); 17 oCom.ExecuteString("ENVI, /RESTORE_BASE_SAVE_FILES"); 18 oCom.ExecuteString("ENVI_BATCH_INIT"); 19 20 //编译算法 21 oCom.ExecuteString(@".compile '"+System.IO.Path.Combine(Application.StartupPath,"RasterSubsetViaShapefile.pro") +"'"); 22 oCom.ExecuteString(@"file='"+inFile+"'"); 23 //获取文件fid(算法需要) 24 oCom.ExecuteString("envi_open_file,file,r_fid=fid"); 25 oCom.ExecuteString(@"shpFile = '"+extFile+"'"); 26 //调用算法 27 oCom.ExecuteString(@"RasterSubsetViaShapefile, Fid, 28 shpFile=shpFile, outFile='"+outFile+"', r_fid=r_fid"); 29 30 if (m_OutLayer != null) mapControl_dst.FocusMap.DeleteLayer(m_OutLayer); 31 m_OutLayer = LayerFactory.CreateDefaultLayer(outFile); 32 if (m_OutLayer == null) { MessageBox.Show("执行失败"); return; } 33 34 mapControl_dst.FocusMap.AddLayer(m_OutLayer); mapControl_dst.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 35 } View Code |
2.5. 示例截图
转载于:https://www.cnblogs.com/PIESat/p/10244166.html
PIE SDK与IDL算法结合说明文档相关推荐
- PIE SDK与OpenCV结合说明文档
1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 ...
- PIE SDK剔除栅格块算法
1.算法功能简介 剔除栅格块即剔除栅格小斑块功能.一幅影像图层某一区域存在碎小斑块,需要对其按照一定的条件进行剔除. PIE支持剔除栅格快算法功能的执行,下面对该算法功能进行介绍. 2.算法功能实现说 ...
- PIE SDK算法的自定义扩展
1.算法功能简介 算法的自定义扩展允许用户自主开发新的算法.自定义的算法必须实现PIE.SystemAlgo.BaseSystemAlgo基础类,这样才能被PIE的算法管理器调用起来. 2.算法功能实 ...
- Caysn打印机IOS平台打印开发包、接口说明文档及示例程序_20170717
打印机开发包,接口说明文档,打印示例程序下载地址:Caysn打印机IOS开发包.接口说明文档.打印示例程序_20170717 Framework版本要求:IOS8 Framework架构:armv7 ...
- Caysn打印机IOS平台打印示例及接口说明文档 - 20161008
打印示例下载地址: Caysn打印机IOS打印示例程序 - sample_20161008 接口说明文档下载地址: Caysn打印机IOS开发包接口说明文档 - PrinterLibs For IOS ...
- LEADTOOLS 20帮助说明文档
LEADTOOLS 20帮助说明文档 LEADTOOLS 20使用DICOM挂起协议创建多学科DICOM查看器 毫无疑问,DICOM挂起协议是忙碌的医生的重要功能.只需查看不同应用程序提供的大量显示布 ...
- PIE SDK影像坏线修复
1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...
- 企业应用开发(4)(补充)--需求说明文档
OJ系统的需求说明文档 1.引言 经过一周的修改及完善,我们基本完善了对OJ系统的需求分析,绘制了思维导图并撰写了用户故事,并设计出了与之相应的原型图. 2.思维导图 如上图所示,我们重新绘制了思维导 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
最新文章
- 从分治算法到 MapReduce
- Android华容道之一步一步实现-8-开始游戏
- linux rm 删除所有文件,linux无需rm就可快速删除大量文件
- 子网,变长子网及超网(CIDR)
- 安全数据分析理念的变化
- 福建省计算机学会 noip比赛,重磅!福州一三附学生领衔全省前九名!他们将代表福建参加全国比赛!...
- PostgreSQL源码学习(1)--PG13代码结构
- 英国政府将设立10亿英镑光网基金
- 《实用机器学习》中的一些拓展问题
- (十四)三次样条插值
- 机器学习十大算法简介
- 2019年一线城市程序员工资大调查
- android解压rar方法,Android以编程方式解压缩RAR文件
- java 爬取ajax,R语言爬虫系列4|AJAX与动态网页介绍
- React实现微信公众号支付
- ps图案叠加怎么添加图案?Photoshop图案如何使用?
- Django QuerySet 就学那么一点点,一点点就够了
- 前端面试题整理(会不断更新哦!~~~~~)
- 文化产权交易系统-大盘行情实时掌控
- stm32在linux下开发(一)