开源遥感平台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实现不了本地 ...
随机推荐
- 使用Expression实现数据的任意字段过滤(2)
上一篇<使用Expression实现数据的任意字段过滤(1)>, 我们实现了通过CriteriaCollectionHandler对象来处理集合数据过滤.通过适当的扩展, 应该可以满足一般 ...
- Eclipse Maven Spring MyBatis 配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- python 学习笔记 -logging模块(日志)
模块级函数 logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root loggerlogging.debug().logging.info().lo ...
- 使用jquery.qrcode生成二维码(转)
jQuery 的 qrcode 插件就可以在浏览器端生成二维码图片. 这个插件的使用非常简单: 1.首先在页面中加入jquery库文件和qrcode插件. <script type=" ...
- 兼容IE8 input的placeholder的文字显示
if( !('placeholder' in document.createElement('input')) ){ $('input[placeholder],textarea[placeholde ...
- 便于开发的Helper类
一.将config封装实体层: 例子config: <?xml version="1.0" encoding="utf-8" ?> <Sett ...
- 将语音搜索集成到Google Now中
原文标题:Use Voice Search to integrate with Google Now 原文链接:http://antonioleiva.com/voice_search_google_ ...
- Oracle计算两个时间戳相差秒数,精确到毫秒
with t as (select to_timestamp('2015-01-01 11:13:15.023456', 'yyyy-mm-dd hh24:mi:ss.ff9') t1, to_tim ...
- 关于SQL Server镜像的一个小误区
昨天晚上突然接到客户的电话, 说在配置了镜像的生产环境数据库下修改 “已提交读快照” 选项的时候报错, 需要先取消镜像然后再重新搭建.悲催的是这是个近TB的数据库,问我有没有什么快速的方法.于是我就问 ...
- Markdown 新手指南
Markdown 新手指南 「简书」作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记语言」,我们强烈推荐所有写作者学习和掌握该语言.为什么 ...