开源遥感平台opticks插件开发指南
Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框架内部的设计机制了解较少,也能开发出合格的插件。
一、插件种类
系统为各类插件提供了基类,插件开发者只需要从这些基类创作自己的派生类,即可实现插件的功能,系统主要提供了以下插件基类:
- ImporterShell
- AlgorithmShell
- GeoreferenceShell
图1
其中,所有的数据输入插件可以从ImporterShell派生,所有的算法类可以从AlgorithmShell派生。地理参考类型的插件可以从GeoreferenceShell这个基类继承。
二、 插件模块要实现的功能
2.1 插件模块的文件结构安排
一般来讲,插件是一个工程,包含了多个文件,其中会有一个名为ModuleManager.cpp 的文件,这个文件的功能很明确,就是将整个工程作为一个模块向框架注册。一个工程中可以同时有多个插件(多数情况下如此)。在图2的例子中,removeHaze.cpp是一个算法插件。
图2
2.2 注册插件
首先,插件需要向框架软件注册自己,下面是ModuleManager.cpp文件的内容。
图3
在图3中, 宏REGISTER_MODULE向框架注册了一个名为IntelligenceAnalysis的模块。
2.3插件的构造函数
以Opticks自带插件PCA为例,详细讲解插件要实现的功能,下面是插件PCA的构造函数:
1.setName("Principal Component Analysis");
2.setVersion(APP_VERSION_NUMBER);
3.setCreator("Ball Aerospace & Technologies Corp.");
4.setCopyright(APP_COPYRIGHT);
5.setShortDescription("PCA");
6.setDescription("Run Principal Component Analysis on data cube.");
7.setMenuLocation("[通用算法]\\Principal Component Analysis");
8.setDescriptorId("{7D2F39B3-31BA-4ef1-B326-7ADCD7F92186}");
9.allowMultipleInstances(true);
10.setAbortSupported(true);
11.setProductionStatus(APP_IS_PRODUCTION_RELEASE);
前4行分别指明插件的名称、版本、作者和版权,第5,6行指明本插件的简短描述,第7行是插件提供的按钮在工具栏上的位置,第8行是一个DescriptorId, 后面介绍。第9行表明该插件是否允许运行多个实例。第10行表明该插件在执行时是否允许被用户中断。第11行指明产品的状态,是否为发布状态。
2.4 插件要实现的其它功能
插件在execute()方法中,提供它要实现的功能。但是插件在执行功能之前,需要从框架内取到需要处理的数据。
开源遥感平台opticks插件开发指南的更多相关文章
- 免费开源ERP Odoo实施指南 连载一:Odoo概述
Odoo是什么 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适 ...
- 免费开源ERP Odoo实施指南 连载二:POSTGRESQL概述
PostgreSQL是Odoo支持的数据库.PostgreSQL是起源于大学的一个历史很长的开源数据库系统.包括美国航天局NASA.德国证券交易中心.中国的平安.腾讯的微信支付.阿里巴巴的阿里云都在用 ...
- Elasticsearch5.5.1插件开发指南
Elasticsearch5.5.1插件开发指南 原文地址: https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/plugin-auth ...
- 开源项目SMSS开发指南(二)——基于libevent的线程池
libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服 ...
- ASP.NET Aries 开源开发框架:开发指南(一)
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...
- 【笔记】jQuery插件开发指南
原文链接:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html (有部分增删和修改) jQuery插件开发模式 软件开发过程中是需要一定 ...
- hdwiki中插件开发指南
插件就是为了满足个性化需求按照HDWiki插件开发规范编写的可插拔程序,虽然可以直接对HDWiki进行二次开发实现插件同样的功能,但是这样做势必影响到系统的升级和稳定性. 采用插件的方式,可以随时进行 ...
- Google 开源项目的风格指南
谷歌C++代码风格指南.农业所需的代码.更难得的是不FQ,决定性的最爱!! . http://zh-google-styleguide.readthedocs.org/en/latest/google ...
- PPAPI插件开发指南
转载请注明出处:http://www.cnblogs.com/fangkm/p/4401075.html 前言 插件一直是浏览器的重要组成部分,丰富浏览器的运行能力,实现一些HTML+JS实现不了本地 ...
随机推荐
- 《连载 | 物联网框架ServerSuperIO教程》- 11.实现设备(驱动)与设备(驱动)交互和级联控制。注:设备驱动模拟金三与普京的对话
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 如何用CSS画三角形
很多时候页面都需要一个或者多个小型三角形!多数人直接用PS扣个图片预览 下面用CSS简单画几个最终效果如下图 <div class="border-all-color"> ...
- co源码解读
背景: 闲来无事,翻了下co的源码来看,源码短小精悍,算上注释,一共240行左右: 决定写一篇博客来记录下学习的心得. TJ大神的co:https://github.com/tj/co 作用: co通 ...
- 针对JS经典题型对全局变量及局部变量的理解浅谈
第一次写博,还蛮激动... 看到了三题经典题型,就我目前的认识对此题进行总结.如有错误,敬请指正 首先,我们先明确一下JS引擎的工作步骤: js引擎工作分为两步: 1.将这个js中的变量和函数声明保存 ...
- 高仿ios版美团框架项目源码
高仿美团框架基本已搭好.代码简单易懂,适合新人.适合新人.新人. <ignore_js_op> 源码你可以到ios教程网那里下载吧,这里我就不上传了,http://ios.662p ...
- Laravel大型项目系列教程(四)显示文章列表和用户修改文章
小编心语:不知不觉已经第四部分了,非常感谢很多人给小编提的意见,改了很多bug,希望以后能继续帮小编找找茬~小编也不希望误导大家~这一节,主要讲的 是如何显示文章列表和让用户修改文章,小编预告一下(一 ...
- 2、项目标准的制定 - PMO项目管理办公室
PMO项目管理办公室应该是针对公司级别的项目内容制定项目标准.这个由公司的项目经理们进行集中讨论,然后将项目标准进行文档化,标准化,从而为公司的项目进行指导性的功能,为公司的项目进行服务.下面对项目标 ...
- 几大排序算法的Java实现
很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向 ...
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
- python-运算符
1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 本文转载自http://www.cnblogs.com/wupeiqi/articles/5444685.html