第1章 绪论 1
1.1 遥感数据处理软件的需求 1
1.1.1 遥感数据处理的需求 1
1.1.2 遥感数据处理领域的角色与关系 2
1.2 开放与开源 3
1.2.1 开源只是手段,开放才是目的 3
1.2.2 开放系统的OCP 4
1.2.3 开放系统的典型代表——Android 5
1.3 OpenRS设计目标 6
第2章 OpenRS的总体架构设计与实现思路 8
2.1 设计思路 8
2.1.1 功能分层架构 8
2.1.2 插件层次架构 9
2.1.3 桌面处理、分布式处理、网络服务一体化 11
2.2 实现思路 11
2.2.1 面向对象设计 11
2.2.2 基于网络服务的分布式处理 15
2.2.3 基于处理链的影像处理 16
2.3 OpenRS对象体系基础 17
2.3.1 OpenRS的树状对象体系 17
2.3.2 OpenRS的接口与对象的命名约定 22
2.3.3 对象的查询 22
2.4 OpenRS对象的生命周期 23
2.4.1 对象的创建 23
2.4.2 对象的持有与释放 24
第3章 插件系统设计与实现 27
3.1 插件系统的设计与实现 27
3.1.1 OpenRS通用插件体系结构 28
3.1.2 插件扫描与对象注册过程 28
3.1.3 插件对象的查询与创建 32
3.2 平台无关的通用插件系统基础 34
3.2.1 日志服务 34
3.2.2 XML序列化服务 36
3.2.3 错误服务(lastErrorService) 37
3.3 OpenRS的三种插件 37
3.3.1 算法插件 37
3.3.2 界面扩展插件 37
3.3.3 属性控件插件 38
3.4 OpenRS的其他基础服务与对象 39
3.4.1 RDF服务 39
3.4.2 系统便利服务 41
3.4.3 矩阵与向量模板类 44
3.4.4 可链接对象 54
3.4.5 可执行对象接口 55
3.5 插件开发初步 56
3.5.1 插件对象编写 56
3.5.2 对象注册 58
3.5.3 对象的创建 62
第4章 面向遥感影像处理的基础模块 65
4.1 影像处理模块orsImage 65
4.1.1 影像源接口orsIImageSource 65
4.1.2 影像处理链接口orsIImageChain 67
4.1.3 影像服务接口orsIImageService 68
4.1.4 写影像接口 71
4.1.5 影像数据的读取与处理 72
4.2 影像几何处理模块orsImageGeometry 75
4.2.1 遥感应用中影像几何处理的需求 76
4.2.2 成像几何模型的统一表示 76
4.2.3 遥感影像的基本几何处理 77
4.2.4 影像几何模型接口 77
4.2.5 多个影像光束的交会 80
4.2.6 空间参考与坐标变换orsSRS 81
4.2.7 动态影像几何变换——imageSourceWarper 85
4.3 影像元数据处理模块 90
4.3.1 不同传感器影像的元数据 91
4.3.2 元数据接口设计 91
4.3.3 传感器 92
4.3.4 观测平台 95
4.3.5 影像元数据 96
4.3.6 元数据的读取 98
4.3.7 太阳天顶角、方位角 98
4.3.8 观测天顶角、方位角 99
4.4 简单要素矢量模块orsSF 99
4.4.1 简单要素矢量数据源 100
4.4.2 简单要素矢量层 101
4.4.3 简单要素服务 102
4.5 其他模块 105
4.5.1 基础地理数据管理模块orsGeoData 105
4.5.2 几何变换处理模块orsGeometry 108
第5章 界面扩展设计 111
5.1 BCGControlBar简介 111
5.1.1 选择BCGControlBar的理由 112
5.1.2 BCGControlBar的扩展性 112
5.2 OpenRS界面扩展接口与实现 114
5.2.1 框架扩展接口orsIGuiExtension 115
5.2.2 抽象框架接口orsIFrameWnd 116
5.2.3 OpenRS界面元素 117
5.2.4 框架扩展实现模板orsIFrameWndHelper 129
5.2.5 消息处理与ID和谐 134
5.2.6 插件中的界面对象创建与消息处理 142
5.3 属性界面 145
5.3.1 BCG属性 145
5.3.2 OpenRS自定义属性界面 149
5.3.3 OpenRS属性事件的响应与动态属性界面 157
5.4 语言本地化 164
5.4.1 MFC的本地化方法 164
5.4.2 OpenRS的本地化方案 165
5.4.3 OpenRS的本地化的实现 165
第6章 桌面集成环境设计与实现 166
6.1 OpenRS主控模块 166
6.2 对象执行器——orsExeRunner 168
6.3 基于图层的影像、矢量显示 169
6.3.1 基本显示架构 169
6.3.2 多视图显示的需求分析 171
6.3.3 多图层、多视图快速显示架构 172
6.3.4 影像图层及渲染 186
6.3.5 矢量图层及渲染 192
6.4 综合显示与集成环境——orsViewer 194
6.4.1 设计目标 194
6.4.2 设计思路与界面设计 194
6.4.3 orsViewer扩展点设计 195
6.4.4 orsViewer扩展插件示例 196
第7章 处理流程设计与实现 197
7.1 外存型处理流程——可执行对象处理流 197
7.1.1 可执行对象 197
7.1.2 实现机制 198
7.2 基于构件模型的可视化流程定制 199
7.2.1 概述 199
7.2.2 节点设计 200
7.2.3 节点关系 200
7.2.4 工作流的序列化 201
7.2.5 工作流的执行 201
7.2.6 OpenRS中的工作流插件 202
7.3 面向处理流程的分布式批处理 202
7.3.1 原理 202
7.3.2 实现 203
7.3.3 执行 204
第8章 分布式并行处理环境设计与实现 205
8.1 PTR并行模型与功能特性 205
8.1.1 MapReduce 205
8.1.2 功能特性 207
8.2 PTR并行处理框架 207
8.2.1 系统角色组成 207
8.2.2 并行调度原理 210
8.2.3 并行算法提交 215
8.2.4 执行状态监控 219
8.3 PTR并行编程接口模型 223
8.3.1 接口定义 223
8.3.2 数据交换与信息输出 225
8.3.3 并行算法插件实例 227
8.4 基于ROI属性的自动并行机制 235
8.4.1 遥感数据并行处理的特点 235
8.4.2 简单任务与并行细分任务的统一 238
8.4.3 基于ROI的自动并行化属性定义 239
第9章 网络服务包装与嵌入应用 241
9.1 一键式网络服务包装 241
9.1.1 基本思想 241
9.1.2 具体实现 241
9.1.3 一键自动包装 243
9.1.4 实现效果 244
9.2 嵌入应用技术 245
9.2.1 场景对象接口 245
9.2.2 场景对象实例 246
第10章 插件开发实践 250
10.1 插件开发的粒度 250
10.2 粗粒度插件——可执行对象 250
10.2.1 orsISimpleExe与orsIParallelExe 250
10.2.2 对象命名规则建议 251
10.2.3 可执行对象帮助模板 252
10.2.4 实例——中值滤波 258
10.3 细粒度插件(依赖于(penRS遥感处理对象体系) 274
10.3.1 算法对象 274
10.3.2 影像链节 点——影像源对象 274
10.3.3 从算法到可执行对象 274
10.3.4 界面扩展——GuiExtension 289
10.4 一个最小的分布式处理算法软件与客户端构成 289
10.5 不同公司或部门软件集成部署方式 290
参考文献 292
附录A OpenRS宏定义与模板 294
A.1 接口定义宏 294
A.2 对象实现宏 294
A.2.1 无主接口的定义和实现 294
A.2.2 带有主接口的定义和实现 295
A.3 插件注册宏 296
附录B OpenRS常用模板 298
B.1 ref_ptr的定义 298
B.2 影像链节点对象帮助模板 300
附录C OpenRS编译环境与运行环境 316
C.1 OpenRS编译环境 316
C.1.1 目录结构 316
C.1.2 第三方库目录 317
C.2 OpenRS运行环境 319
C.2.1 桌面运行环境 319
C.2.2 分布式处理配置 321
C.2.3 服务网关的安装于配置 322