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'");)。

  运行时将文件 BlendWithIDL\Libs\Win32\RasterSubsetViaShapefile.pro 复制到 PIESDK\Bin目录下

  注意:本示例使用的IDL版本是IDL82,需安装ENVI5.0+IDL82才能正常执行。如有更高版本的ENVI+IDL,先将项目引用里的Interop.COM_IDL_connectLib、COM_IDL_connectLib、AxInteropIDLDRAWX3Lib三个程序集删除掉,然后右键添加引用,在COM里面找到COM_IDL_connectLib 1.0 type Library 项,选中添加此引用,并将COM_IDL_connectLib引用的嵌入互操作类型属性改为false。

  

第一步

添加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

示例代码

          /// <summary>
/// 图像裁剪
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button_run_Click (object sender, EventArgs e)
{
string inFile = textBox_srcImg.Text;
string extFile = textBox_ext.Text;
string outFile = textBox_dst.Text; COM_IDL_connectClass oCom = new COM_IDL_connectClass();
oCom.CreateObject(, , ); //若依赖envi,先初始化ENVI批处理
oCom.ExecuteString("COMPILE_OPT idl2");
oCom.ExecuteString("ENVI, /RESTORE_BASE_SAVE_FILES");
oCom.ExecuteString("ENVI_BATCH_INIT"); //编译算法
oCom.ExecuteString(@".compile '"+System.IO.Path.Combine(Application.StartupPath,"RasterSubsetViaShapefile.pro") +"'");
oCom.ExecuteString(@"file='"+inFile+"'");
//获取文件fid(算法需要)
oCom.ExecuteString("envi_open_file,file,r_fid=fid");
oCom.ExecuteString(@"shpFile = '"+extFile+"'");
//调用算法
oCom.ExecuteString(@"RasterSubsetViaShapefile, Fid,
shpFile=shpFile, outFile='"+outFile+"', r_fid=r_fid"); if (m_OutLayer != null) mapControl_dst.FocusMap.DeleteLayer(m_OutLayer);
m_OutLayer = LayerFactory.CreateDefaultLayer(outFile);
if (m_OutLayer == null) { MessageBox.Show("执行失败"); return; } mapControl_dst.FocusMap.AddLayer(m_OutLayer); mapControl_dst.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

2.5. 示例截图

PIE SDK与IDL算法结合说明文档的更多相关文章

  1. PIE SDK水深提取算法

    1.算法功能简介 水深提取算法就是根据输入的水位设为d,dem设为h 这两个数据做一个差值运算,则水深计算公式为d-h;本示例中的是基于洞庭湖提取的水体矢量文件的范围来计算dem和水位25米的差值. ...

  2. PIE SDK创建金字塔算法

    1.算法功能简介 为栅格影像建立了金字塔,这些影像便能快速进行显示.除了在屏幕上显示外,金字塔还包含了很多其他信息.如果没有金字塔,那么在显示时就要访问整理栅格数据集,然后进行大量计算来选择哪些栅格像 ...

  3. PIE SDK图像重采样算法

    1.算法功能简介 图像重采样是指对采样后形成的由离散数据组成的数字图像按所需的像元位置或像元问距重新采样,以构成几何变换后的新图像.重采样过程本质上是图像恢复过程,它用输入的离散数字图像重建代表原始图 ...

  4. PIE SDK缓冲区分析算法

    1.算法功能简介 缓冲区分析是指有点.线.面实体为基础,自动建立其周围一定宽度范围内的缓冲区多边形图层,然后建立该图层与目标图层的叠加,进行分析而得到的所需的结果.他是用来解决邻近度问题的控件分析工具 ...

  5. PIE SDK矢量栅格化算法

    1.算法功能简介 矢量栅格化,由矢量数据向栅格数据的转换一般比较方便.对于点.线目标,由其所在的栅格行.列数表示,对于面状目标,则需判定落人该面积内的像元.通常栅格(像元)尺寸均大于原来坐标表示的分辨 ...

  6. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  7. PIE SDK与OpenCV结合说明文档

    1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...

  8. PIE SDK与Matlab结合说明文档

    1.功能简介 Matlab是三大数学软件之一,它在数学类科技应用软件中在数值计算方面首屈一指.Matlab可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程语言的程序等,主要应用于 ...

  9. PIE SDK与GeoServer结合说明文档

    1.  GeoServer简介 GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操 ...

随机推荐

  1. 10.Python之Ansible自动化运维常用模块

    Ansible中文权威文档:http://www.ansible.com.cn/docs/ Ansible从入门到精通:https://www.bilibili.com/video/av3361175 ...

  2. Linux 下安装tomcat 服务器

    1. 下载tomcat wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz tar ...

  3. yum 安装telnet

    检测是否安装 rpm -qa |grep telnet 安装 yum install xinetd yum install telnet-server yum -y install telnet 再次 ...

  4. Floyd-Warshall求图中任意两点的最短路径

    原创 除了DFS和BFS求图中最短路径的方法,算法Floyd-Warshall也可以求图中任意两点的最短路径. 从图中任取两点A.B,A到B的最短路径无非只有两种情况: 1:A直接到B这条路径即是最短 ...

  5. OM Responsibility Flow

  6. js Date 生成某年某月的天数

    $(function () { //构造一个日期对象: var day = new Date(2014, 2, 0); //获取天数: var daycount = day.getDate(); al ...

  7. TSQL--SET ANSI_NULLS OFF

    当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或< ...

  8. 打开Word 2010 老提示安装 Office single image 2010

    解决办法: WScript.Echo "Try to repair registry key..."  'verify Office version  Set objshell = ...

  9. 一、SpringBoot是什么?

    SpringBoot是什么? 我管她是什么,好用就行了啊!!!但是无奈我的简历上写了“精通SpringBoot”...那总得大体说得上SpringBoot是个啥东西吧! Spring相信大家都用过,那 ...

  10. java 笔记整理

    在19寒假对java基础进行自学,总结的笔记整理出来 ==================================================== 排序查找 冒泡排序法1.一共会比较数组元 ...