余粉香, 郭丽萍, 姚诚勤, 张 挺
(中国人民解放军61175部队,江苏 南京 210049)
S-57是IHO国际海道测量组织规定的官方电子海图数据传输标准。由于数据存储规范、标准完备、便于海图更新和修正等优点,使其在国内外民用、军用领域得到了大量的应用[1],常作为更新海部地理信息数据的重要数据源。目前,数字地图生产中,通常基于S-57海图对应的纸质海图进行海部要素的采集更新,这种方式人工采集工作量比较大,更新效率不高,而且扫描纸质海图存在扫描误差,人工采集存在采集误差,导致更新后的数据精度有所降低。为了提高S-57海图数据利用的效率和准确率,本文在分析S-57海图数据格式和表达内容的基础上,研究如何将S-57海图数据快速转换为基础地理信息数据,达到快速更新数字地图中海部要素的目的。
S-57海图是以描写海域地理信息和航海信息为主的空间数据的有序集合,通常S-57海图文件是以扩展名为.000文件格式存储的[2],命名为:CCXXXXXX.000,CC为生产机构代码,XXXXXX为文件唯一标识(采用大写字母和数字)[3]。S-57海图可以包含一个或多个数据图层。通过数字海图的分层模型,区分地理空间特征类别,便于数据显示、查询和要素选取等操作。S-57海图数据主要有以下几方面特点。
1.1.1 封装性
S-57海图数据采用的封装结构是一种高压缩的数据交换格式,是用户不可见的.000数据格式,数据结构较为复杂[4],数据按ISO/IEC8211封装,8211提供了独立于机器构造的文件格式,这种数据交换结构便于数据规范化传输,但不便于数据操纵[5],直接读取难度较大,转换比较复杂。
1.1.2 标准化
S-57海图是基于S-57标准生产,这个标准由引言、理论数据模型、数据结构、IHO物标类目及ENC产品规范等部分组成,定义了S-57海图数据的内容、规则和方法。S-57标准将真实世界实体定义为描述特征和空间特征两种[6],即特征物标和空间物标。物标突出的是客观实体的属性,物标类目分为物标和物标属性,物标包含了地理物标、元物标、组合物标和制图物标,每类物标都有固定的代码。物标属性分为特征物标属性、本国语言描述的属性、空间和元物标属性,每一种物标属性都有其特定的代码,在进行数字海图转换时,主要是进行地理物标的转换[7]。研读S-57海图数据的这些标准,是S-57海图数据转换的前提。
S-57海图采用的坐标系为WGS84[8],我国发布的电子海图坐标系为2000国家大地坐标系(简称CGCS2000),由于CGCS2000与WGS84坐标系基本重合且因扁率的微小差异所引起的最大坐标差值在0.15 mm以内,因而两者在海图生产中等同使用,无须进行改算[9]。坐标以地理位置(经纬度)记录,这和基础地理信息数据一致,几何位置转换前后不做改变。而S-57海图数据的分层、属性存储方式不同于基础地理信息数据,经分析主要有以下几方面特征需要在转换过程中加以解译和重新赋值。
1.2.1 数据分层
数字海图表达的主要内容是海洋地理信息,分层必须满足航海需要,还应考虑数据的采集、要素间拓扑关系处理、数据显示和传输等因素。海图数据的主要内容包括陆地、岸线结构物、岛屿、礁石、水深、航标、灯塔、航道、光缆等要素,而基础地理信息数据主要包括居民地、交通、管线、水系、境界与政区等要素,转换过程中要将海图数据的内容转换到基础地理信息数据对应的图层内,并赋上对应的要素编码。
1.2.2 属性字段
S-57海图数据中有很多属性描述字段被定义为枚举型(E)或者列表型(L)。这两个属性类型的输入值已做预先定义,规定了属性的相互关联、特殊规定和确切含义[3]。其中,枚举型必须选择一个且只能选择一个预先定义好的正确值,在相应的属性字段中存储的是0、1、2……;列表型可以从预先定义的属性值列表中选出一个或多个值,在相应的属性字段中存储的是0、1、2……或者它们的组合,代表不同的属性值。在将S-57海图数据转换为其他数据格式时,需要将此类型的属性字段解析为对应的属性值。这些类型属性字段对照关系整理为Excel表,目前已有1 000余条对照关系,其数据结构如表1所示,记录了字段代码、标识号、字段值等属性。
表1 S-57海图属性字段对照关系数据结构
转换过程中,需要根据海图属性字段对照关系表(Excel表),将S-57海图数据中的此类型属性值进行解译,赋上对应的字段值。即把0、1、2……标识号解译为相应的字段值,以BCNSHP字段为例,如表2所示,2对应属性值“whity”,3对应属性值“beacon tower”,依此类推。
表2 S-57海图属性字段对照关系样例
S-57是一个数据交换标准,数据结构部分按数据结构、编码一般协议、元记录编码协议、特征记录编码协议、空间记录编码协议、关系编码、结构应用、数据改正等八个方面按IS0/IEC 8211标准进行数据封装,因而转换时先要将S-57数据进行解包。解包过程是按照S-57格式定义,读取二进制格式文件,将S-57格式数据逐条翻译成空间矢量记录和属性字段,过程比较复杂,工作量较大。本文从数据应用的角度研究S-57海图数据的快速转换。FME是一套完整的访问空间数据的解决方案,可读写和转换100余种格式的空间数据。本文基于FME软件读取S-57数据基础上,重点研究S-57海图数据内容解译、与数字地图数据的对应关系,通过转换方案设计和转换流程定制,完成S-57海图数据的快速转换。
转换流程如图1所示,在FME读取S-57海图数据过程中,进行水深值赋值和属性字段解译,将S-57海图转换为shp格式数据,再通过shp转换模块将shp格式数据转换为基础地理信息数据。
图1 S-57海图数据转换流程
2.1.1 编码和分层对照
S-57海图数据中没有具体的要素编码,它是按照图层和属性值来确定某一类要素的。而基础地理信息数据是有一套完整的编码体系,数字地图是根据编码体系进行符号化。在将S-57海图数据转为基础地理信息数据时,先给转换后的要素赋上要素编码,明确要素所在要素层。为此,需要编制编码对应表,并做好图层对应。以SOUNDG图层为例,在S-57海图数据中是水深点层,在转换时编码直接赋为相应的水深点编码。
2.1.2 属性信息对照
由于基础地理信息数据每一要素层的属性信息都有其固定的数据结构,为此,在编制属性信息对应表时,是以基础地理信息数据属性信息为基础,将S-57海图数据的属性信息与其对应。对于两者属性项有对应关系的进行一一对应,而两者不能对应的分三种情况处理:一是S-57海图数据的属性信息对数字地图用处不大的直接舍去,二是对基础地理信息需要的属性但S-57海图数据没有的属性赋统一的属性值,三是S-57海图数据有的属性项虽然不能与基础地理信息一一对应,但对数字地图有用的,在转换后的其他属性项里进行说明。以SOUNDG图层为例,QUASOU、POSACC、QUAPOS字段分别描述水深测量特性、位置精度和位置性质,能够反应出该水深点是精测水深或者不精确水深,这对数据分析和地图制图影响较大,建议此类属性信息进行保留。
2.1.3 水深值赋值
S-57海图数据中水深点(SOUNDG)图层属性中不存储水深值属性字段,水深点坐标是用三维坐标(x,y,z)存储的,其中,z值对应该水深点的水深值。在将S-57海图数据转换过程中,需要读取z值坐标,再将z值赋值到水深值(Depth)属性项中。具体流程如图2所示。
图2 水深值赋值流程
2.1.4 拼接处理与裁剪分幅
S-57海图数据以地理单元为分幅方式,海图文件都是矩形[10],类似基础地理信息数据的图幅,但两者分幅规则不同,因而将S-57海图数据转换为基础地理信息数据时,需要进行数据的拼接和裁减处理,如图3所示。
图3 拼接处理与裁剪分幅
为了减少S-57海图数据分析和编程的工作量,本文设计了基于FME的数据转换流程。整个转换过程中,主要分为两部分:一是基于FME将S-57海图数据转为shp格式的数据,这一过程中,除了做格式转换外,还要进行属性字段解译,确保转换后的shp数据内容是完整的;二是通过shp转换模块将shp格式的数据转换为基础地理信息数据,这一过程主要工作是制作编码和分层对照表、属性信息对照表,基于这些对照表实现数据转换。
以SOUNDG图层为例,基于FME软件将S-57海图数据转换为shp数据流程,如图4所示。
图4 SOUNDG图层转换为shp数据定制流程图
将shp数据转换为基础地理信息数据时,首先,要定义属性转换控制,以SOUNDG图层为例,Depth字段对应为高程值,QUASOU字段对应测深质量等。其次,做好编码和分层对照,如SOUNDG图层转换后统一赋相应的水深点编码,图层对应到地貌层。
根据本文的方法,定制了S-57海图数据转换流程,基于FME实现了S-57海图数据到基础地理信息数据的转换。为测试该方法的可行性,本文选取了多个地区大小不等的S-57海图数据(*.000格式)做实验,先把*.000转为shp文件,再将shp文件转换为基础地理信息数据,转换结果均符合基础地理信息数据要求。以某地区S-57海图数据为例,转换前后符号化后对比如图5所示,转换前后数据量对比如表3所示。
表3 某地区S-57海图数据转换前后数据量对比
图5 某地区S-57海图数据转换前后对比图
S-57海图数据转换为基础地理信息数据是一项复杂而繁琐的工作,本文所涉及到的关键技术和部分特殊问题处理会因S-57海图数据版本的不同而发生部分参数调整,但技术方案和处理思路同样适用。
实践证明:本文提出的S-57海图数据转换为基础地理信息数据方案,有效降低了S-57海图数据直接转换为基础地理信息数据的难度,流程可控,简单易操作,对作业人员专业要求不高,转换正确率高,可以有效提高数字地图中海部要素更新效率。