开源遥感平台opticks插件开发指南

时间:2021-02-13 06:19:04

Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框架内部的设计机制了解较少,也能开发出合格的插件。

一、插件种类

系统为各类插件提供了基类,插件开发者只需要从这些基类创作自己的派生类,即可实现插件的功能,系统主要提供了以下插件基类:

  • ImporterShell
  • AlgorithmShell
  • GeoreferenceShell

开源遥感平台opticks插件开发指南

图1

其中,所有的数据输入插件可以从ImporterShell派生,所有的算法类可以从AlgorithmShell派生。地理参考类型的插件可以从GeoreferenceShell这个基类继承。

二、 插件模块要实现的功能

2.1 插件模块的文件结构安排

一般来讲,插件是一个工程,包含了多个文件,其中会有一个名为ModuleManager.cpp 的文件,这个文件的功能很明确,就是将整个工程作为一个模块向框架注册。一个工程中可以同时有多个插件(多数情况下如此)。在图2的例子中,removeHaze.cpp是一个算法插件。

开源遥感平台opticks插件开发指南

图2

2.2 注册插件

首先,插件需要向框架软件注册自己,下面是ModuleManager.cpp文件的内容。

开源遥感平台opticks插件开发指南

图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插件开发指南