在本公众号文章《EyeUVison电子海图为海上航行点亮行程》(2020年4月17日发布)中介绍了航海雷达显示终端基于S57标准实现的电子海图显示能力,但对于陆地岸基雷达终端,往往需要进行陆图的显示。本文将基于ShapeFile格式介绍陆地矢量地图文件的组成与显示。S-57是由海道信息系统条件委员会提出的海道数据传输标准,是目前最具权威性的海图数据标准,对于陆图,美国环境系统研究所提出了基于ShapeFile格式的矢量数据文件,用来储存陆地地理信息特征。ShapeFile文件由主文件(*.shp)、索引文件(*.shx)、属性表文件(*.dbf)组成,其并不存储拓扑关系,而是通过点、线、多边形来存储特征形状。主文件是整个 ShapeFile的核心。其数据结构由固定长度的文件头以及变长的记录构成,如表 1所示。文件头存储了文件的长度、版本、几何形体类等基本信息。记录又由记录头与记录内容组成。记录头存储了本记录的索引号和内容长度;记录内容存储了该几何形体的形状类型、部件点以及顶点数据。索引文件是存储图形要素与属性信息索引的文件,主要起到定位的作用,其 由文件头和记录两部分组成,文件头的内容和主文件的基本一致。属性表文件是由头记录及数据记录组成。头记录定义了该表的结构并包含与表相关的其它信息,它主要对属性文件作一些概括性描述。ShapeFile主文件的记录内容包括目标的几何类型( ShapeType) 和具体的坐标记录( X,Y) ,记录内容因要素几何类型的不同,其具体的内容及格式都有所不同。几何类型可以分为点 ( Point) 、线( PolyLine) 和面( Polygon) 3 种类型。点类型存储的是一组坐标( X,Y) ,其记录结构如表 2所示。线类型存储的是一系列的点坐标串( X1,Y1,X2,Y2 ) 。其记录结构如表 3所示。 | | | | | | | | | | | | | | | | | | | | | 每个子线段的坐标在 Points 数组中的起始位置 | | | | | | | 面类型存储的是一系列封闭的坐标串( X1,Y1,X2,Y2,…,X1,Y1 )。其记录结构如表 4所示。 | | | | | | | | | | | | | | | | | | | | | 每个子线段的坐标在 Points 数组中的起始位置 | | | | | | | 根据ShapeFile 的数据格式,可以按 ShapeFile的几何类型来创建图层, 然后逐条解析并存储 ShapeFile的主文件和属性文件记录。ShapeFile矢量地图读取流程如图 1所示。雷海雷达显控终端已基于ShapeFile矢量地图文件实现了陆图的显示,如图 2所示。显示信息可以根据配置选择显示的内容,如是否显示城市、乡镇、名称以及水系、铁路、公路等。本文以 ShapeFile 数据为基础,介绍了ShapeFile文件的基本结构,通过对该结构的解析,实现基于ShapeFile的矢量地图的读取与显示。根据海图与陆图不同场景,可以灵活切换使用,进一步的,可在S57与ShapeFile数据共享方面进行深入研究,以增强水陆信息的一体化的管理能力。a) 跨平台GIS在交通共享平台建设中的应用,李闻昊;b) ARC/VIEW中 Shapefile 数据结构剖析及格式转换,张新宇;c) 矢量地图在浙江电力GIS中的应用研究,钟一俊; d) ShapeFile格式文件写入方法研究, 柳佳佳;f) ShapeFile格式电子海图数据集成存储研究,郝燕玲。
|