RSD 教程 —— 0 关于 RSD

0 关于RSD

RSD(Remote Sensing Desktop)是一个通用的遥感数据综合处理平台,能够处理多种卫星和其它来源的遥感数据以及相关辅助信息,包括栅格格式(GRID)的遥感数据、卫星扫描图幅数据(SWATH)、矢量格式空间数据和一些其它种类的地学数据。

众多的对地观测卫星及其它平台的观测数据由接收站接收后,经预处理后分发。RSD的任务就是将这些分发的数据处理成各种类别的应用产品。这些产品可能包括区分不同的地物类别、反演得到海、陆、冰雪、大气等物理参数、特定目标的识别提取、变化检测和动态监测等。RSD就是专门为这些应用目的而设计的。

RSD能够同时处理多源的多种遥感数据。同时加载的不同来源的遥感数据使每一个数据源在RSD中表示成一个数据层,每一个数据层又有自己的多个通道的波段数据和属性数据。在RSD框架下,不仅可以在不同的通道间进行数据处理,同时可以在不同的数据层之间进行等同的交互处理,为多源数据协同处理提供了极其便利的处理手段。RSD可以同时处理高空间分辨率遥感数据和中低分辨率数据,可以在这些异源数据数据之间进行协同处理、指数计算、融合或生成一些基于多源数据的目标产品。

为实现上述的多源数据处理的目标,RSD设计了基于任务和框架的处理方式,为多分辨率、尺度变换、数据协同处理等复杂处理机制提供了极大便利。

卫星扫描图幅(SWATH)数据可以被认为是有几何畸变的栅格(GRID)数据。同时SWATH像元可以由卫星轨道、星上仪器和不同扫描方式单独定位,这样每个SWATH像元都可以有自己的空间坐标(位置)信息和属性,从这一点来看一个SWATH像元可以被认为是一个矢量点数据。因此,可以认为SWATH数据同时具有栅格数据和矢量数据的二元双重特性,RSD的基于SWATH的数据处理就是基于其这些二元特征实现的。

卫星运营部门提供给用户的SWATH数据多未经过像元位置移动而仅标记了像元位置,有最初的原始位置。用户对这些原始的扫描数据进行栅格化处理时,大多要进行像元重定位,得到通常意义上比较“规范”的栅格数据。但是如果在此基础上再进行多分辨率尺度变换,或者在不同的大地基准和投影间转换,就要进行二次或者多次的像元重定位。而每进行一次像元重定位,都要损失一次位置或者光谱信息的精度。RSD的基于SWATH的数据处理方式可以使数据处理在SWATH水平上进行,减少栅格处理中像素重定位次数,尽可能保留原始像元的位置精度和光谱数据辐射值的精度。

遥感数据处理过程大多是将一个或多个来源数据经过加工生成生目标数据,这种数据处理过程是目的驱动的,既为某一目标处理过程加载数据,处理完毕得到产品后释放数据。这样的线性处理过程逻辑关系清晰,目标明确。RSD可以按照这种线性的数据输入输出关系处理数据,也可以按照多个数据加载和多种产品生成导出的非线性数据处理过程。

RSD重要特点之一是面向任务的处理方式,这一点与通常的遥感数据处理流程有很大不同。反而更类似于一个GIS平台——先定义区域再加载数据。

可以认为通常的遥感数据处理流程是面向数据的,其合理的处理过程可能为:

  1. 打开遥感数据。
  2. 在数据范围找出感兴趣的区域(AOI/ROI)。
  3. 对数据进行区域分割。
  4. 对数据进行处理。

RSD的面向任务的处理过程很可能是这样:

  1. 预定义一个区域(在RSD里面是建立一个区域的框架)。
  2. 加载数据,只加载预定义区域内数据,舍弃区域外数据。
  3. 对数据进行处理。

在同一个区域框架内加载不同来源的数据以便于在同一框架下等同地处理这些数据。

RSD的数据处理是分“层”的。实际上通常人们认为所有遥感数据处理过程都是分层的,但是这里特别提及RSD的层可能不同于通常我们所认为的“层”。通常我们所说的一个层可能指是一个数据通道(暂不考虑矢量情况),但在RSD里面一个“层”可能是指一个数据集。例如我们在一个任务中加载了Landsat8每月一个的数据集,这时我们可以命名各层如:Landsat8-01层表示1月份的数据、Landsat8-02层表示2月份的数据…。显然这里层不是指的Landset8各个波段的数据,而是每月一个的遥感数据。或者我们简单地认为RSD的一个层就是一个数据集。

RSD除在处理理念上的不同外,在处理技术上也有很大不同,主要特点表现在下述几个方面:

首先是RSD的处理流程发生了很大改变。由于RSD面向任务的设计框架,RSD被设计成同时加载、增删、变换,且“不落地”处理多个、多源的数据集。例如,随时向任务添加各种处理级别的数据、随时删除不需要的中间结果的层。通常进行一次数据变换或处理的结果会在任务中增加一个新层,结果的去留取舍取决于你对结果满意与否,满意的保留,不满意的随手删除,而不需要在磁盘上定位中间结果的磁盘文件。这与 “每次落地”的频繁存取处理方式相比,省略了用户查找外部文件过程,不生成中间文件。简化了操作过程并节省了处理时间。

其次,RSD实现了大数据集的分布式处理。近年来大数据是个时髦流行的词儿,遥感数据也不失时机地往上靠沾点光,遥感大数据的提法也频频出现。要说遥感数据符合什么所谓的大数据几个V的话,体量大确实是遥感数据的重要特征。遥感数据具不具备什么5Vs特征暂且不论,但是有一个“V”还应该加上,就是“Visualization”。成像是遥感的一个重要特点,很多遥感产品都是通过图像向人们传递信息的,所以可视化Visualization这个V算是遥感大数据的重要特征了。话又说回来,叫什么怎么定义其实都无所谓,理论空谈和概念噱头而已,最后还是要落实到工程技术的处理层面上。

遥感数据的“大”是事实,一个是整体的数据体量庞大,还有就是个体的数据规模大。通常人们将大量的数据集放置与存储介质上,多以数据集磁盘文件方式存取。RSD尝试采用了一种不同的处理方案,将这些大规模的数据“打碎”,在网络上进行分布式存储和分布式处理。破除了数据体量和数据规模的限制,提高了处理效率。

第三,RSD设计了一个大规模显示阵列EDA(Extensive Display Array),其设计目标为单次10亿像元的显示能力,实现了大范围、超精细的逐像元显示。同时实现了在EDA上的漫游、缩放等常用显示功能。

遥感数据集的像素规模达到几十几百亿是常态,但是想要使用电子方式常规显示如此大规模的图像是不可能的。这里强调一下这不是口误,通常电子方式可以存储大规模的图像,但是无法显示大图像,除非把它印到硬介质上。可能有人会不同意了:看宏观全景我们可以将其缩小到一个屏幕上,看细节我们可以局部放大,怎么就不能显示了?但问题是,如果按照这个要求,看宏观图像我们可以做一个全局的粗略图像,看细节有一张张的小图也行,那么大图的意义又何在?这就像一个军事指挥中心墙上没有详尽的大图而指挥员们在各自翻看自己手里的地图册。

查看细节详尽而整体又宏大的地图的重要性是不言而喻的。面数据结论提供的是宏观整体的结论,多数形况下只能通过“图像”来向人传达信息,而图像上的信息历来追求广大的范围和详尽的细节。日常的地图、海图、天气图等等莫不是如此。高图像分辨率从来就是人们追寻的目标,没有最高,只有更高。

RSD的EDA我们可以用电视机和地图进行一下比较说明。如果房间里有一个大电视,人们一定要坐在离开一定距离的位置观看,即有一个所谓的最佳观看距离。但是如果墙上贴了一张世界地图,就不会有人特意离开老远的去观察这个地图,多会离近察看,甚至还可能拿个放大镜仔细察看。现在的大多数拼接屏技术无论几个K基本都是单屏的放大或者多个屏幕的独立显示,基本上可以被看成是一个上面例子中的大电视,必须离开一定距离观看,即“远视屏”。RSD使用显示器级别的小点距屏幕,相当于贴在墙上的地图,需要离近察看(当然远看也可以),是“近视屏”。虽然都是拼接屏,看起来相像,但性质完全不同,不是一样的东西。

第四是RSD设计了自己的脚本语言GeoGeo(99)。99是解释的,语法和C是一样,主要功能以函数为主体,遥感数据集处理等大部分功能都是通过调用这些函数实现的。RSD 99没有自己另搞一套语法规范,学习过一些C语言基础基本上是看看就会,不用特意学习和记忆一些语法符号。99的主要设计初衷是实现分布式计算、存储和显示系统,而不依赖第三方的生态环境。

RSD的主要指导思想是外部的技术或者环境尽量不用,这不同于一些项目宣传,使用了多少国外的先进新技术云云。RSD在能够满足设计目标的基础规避这些外部生态,追求简洁、高效和安全,也正因如此RSD曾被质疑其先进性。只是追求的目标和理念不同了,使软件更加高效好用比宣传噱头更重要。

最后一点是RSD完全使用C/C++开发,在效率和速度方面优势显著。设计有自己的C/C++库,因此除99脚本外,二次开发也可直接使用RSD的SDK开发包。

在开始安装使用软件之前,再在这里介绍几个在RSD中用到的基本概念:

1 任务

任务(Mission)是RSD解决问题的目标,或者说是一个应用项目(Project)。一个RSD任务的前端是一个主窗口,后端对应的是一个应用框架。

创建RSD的任务也可以认为是开始处理遥感数据的过程。例如,计算一个地区的植被指数是一个任务,调查统计全中国的土地利用也是一个任务。一个RSD运行实例可以同时开启有多个任务。

2 框架

框架是在任务中用于协调规范各种数据集(层)和用于描述数据之间关系的元数据对象,是用于描述这些空间数据的数据。一个任务通常都要有一个框架来统一来管理数据集(层),但是框架并不仅仅限于对任务数据集的描述,每层数据也还有自己的元数据(框架)。例如一个数据集一旦脱离了原来的任务,立即使用自己的框架创建一个新任务。常见的例子是如果从任务中导出一个层到磁盘文件,则依据导出的数据创建了一个新任务。

从用户的角度,可以把任务的 层0 看成是任务的框架。或者简单理解为定义的区域。比方定义的区域的范围、投影、像元尺度等必要信息。

3 层

一个任务包含1个或者多个层。第1个层(层0)总是分配给任务的框架,后面的每一个层通常是一个个的数据集,比方,一个Landsat8的反射数据、一个GF卫星的多光谱数据等。除了遥感数据,其它矢量类型的地理数据、文本、图标等都可以构成1个层。

注意:RSD的层是数据集,不是通常认为的1个波段的数据。

4 SWATH与GRID

GRID可以理解为我们通常使用的栅格数据。而SWATH是扫描刈幅数据,虽然也是顺序排列像元,但是由于像元位置不均匀,还需要额外的信息来描述像元的空间位置。

RSD的层里面有GRID层,也有SWATH层,RSD对二者的处理方式有所不同。

5 NATIVE GRID与ALIEN GRID

一个GRID数据集如果与框架的投影和像元尺度一致时(不含空间范围),则这个层是这个框架的NATIVE GRID。否则就是ALIEN GRID。可见,一个层是NATIVE GRID还是ALIEN GRID并不是由数据本身决定的,而是由数据和框架之间的关系决定的,一个栅格数据层,在一个框架下是NATIVE GRID,但是迁移到另一个任务中时(不同框架)就可能是ALIEN GRID。

RSD引进了这些概念是希望通过框架将不同来源的数据强制统一和规范。不需要用户将不同数据不断进行投影和尺度转换。这是RSD自动进行投影和尺度转换所需要的。

其实,如果RSD 不区分这些层的特殊性,而直接将所有SWATH和 ALIEN GRID转化成普通意义的GRID也是可以的。但是考虑到数据在不同框架多次变换和重定位会降低数据精度,保留这些SWATH和 ALIEN GRID可以让数据在不同任务中多次迁移而保留初始位置精度。

6 数据集

数据集(DataSet)在很多场合都被用来表示一系列数据的集合。一个数据文件可以称为一个数据集,一系列的文件集合也可以称之为一个数据集,甚至一个文件的一部分也经常被称为一个数据集。在这里,除非特别说明,我们将一个遥感数据称之为一个数据集,或者遥感数据集。这里用“一个”来表示一个独立的遥感数据处理单元。比方一个表示卫星对地观测数据的.hdf文件可以是一个数据集,但是如果它需要辅助的地理定位数据,则2者合起来表示一个数据集。再比方一个Lansat8数据由一系列的单独通道的TIFF数据文件组成,则所有这些文件以及附带的辅助文件被称之为一个数据集。注意这里数据集所指内容与其它表示的差异。

7 TFS

TFS(Tile File System)是RSD的分块文件系统。大规模数据集时为避免文件过大将其“打碎”为一系列的瓦块文件,分布式存储于网络/单机环境,以提高处理效率。

8 TODO面向任务与面向数据

RSD的设计是面向任务TO(Task Oriented)的,与此对应的是面向数据DO(Data Oriented)的遥感处理软件。放在一起就是TODO,主要是为了方便好记。

有什么不同呢?TO首先要确定你的任务。是哪儿,东北大平原还是爪哇国?多大的处理尺度,50km的土壤湿度还是亚米级的高分辨率数据?什么投影?... 这样就需要先为任务定义一个框架,然后加载各种各样的数据。是我需要的数据我加载,不是这个任务的数据就丢弃不管了。

DO呢?来了一个数据,打开看看,如果可以用于这个项目,继续处理使用。

其实实际应用当中二者并不是截然分开的,两种特征都有。

返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值