资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
opencpn 电子海图显示与信息系统 西安融成科技有限公司 http:/ 本文介绍 OpenCPN 中 ENC 到 SENC 的转换过程。 ENC(Electric Nautical /Navigational Chart)是由国家官方机构(HO)发布的、专供ECDIS 使用的、符合国际标准的数据库。ENC 除包含为了安全航行所必需的海图信息外,还可能包含航路指南、 港口概况等其他有用的信息。 其数据格式主要有矢量方式和栅格方式两种。经 IHO 承认的矢量数据格式标准为 S57/3.0,栅格数据格式标准为 ARCS。 在海图系统中,一般将 ENC 海图转换为系统内部格式 SENC(系统 ENC) 。OpenCPN也不例外。OpenCPN 代码中对应功能函数为 BuildSENCFile。函数定义如下: 其中参数,FullPath000 为 000 文件(即 ENC 文件)全路径;SENCFileName 为转换结果生成的 SENC 文件名。 OpenCPN 的 SENC 文件格式总体分为两部分: 文件头+内容。 文件头中包含了关于海图的总体信息,包括版本号、更新时间、比例尺等;文件内容为具体海图元素。 1. GetBaseFileAttr - 获取海图文件基本信息,用于写 SENC 头。 函数中使用 DDFModule 打开 ENC 文件,读取比例尺等基本信息所在的 Record,从而获取需要的数据。 读取海图比例尺: DDFModule, DDFRecord 是 gdal 库中的类,用于读取 ENC 文件。 关于 S57 标准,请参考论坛中的帖子: 。 。 。 对于 gdal 库,我接触也不深,想要深入学习的人可以看此牛人的博客: . 也欢迎讨论交流。 以下是写 SENC 头的部分代码,简单易懂不用解释: opencpn 电子海图显示与信息系统 西安融成科技有限公司 http:/ 2. 类 OGRS57DataSource 封装了 gdal 库,实现对 ENC 文件的读写。过程如下: 1). 设置对于 s57 读取的控制选项 gdal /ogr 中关于 optionlist 的说明: 引自:http:/www.gdal.org/ogr/drv_s57.html 2). 调用 OGRS57DataSource:Open 完成读取 Feature 前的准备 3). 获取 S57Reader 4). 调用 S57Reader:ReadNextFeature 读取 Feature 5). 循环处理读取到的每一个 Feature, 在 CreateSENCRecord 中写入 SENC 文件 函数原型如下: A. 循环写入 Feature 所有 Field : opencpn 电子海图显示与信息系统 西安融成科技有限公司 http:/ B. 根据几何类型写入其他信息。其中内容微复杂。 6). 写 VE Table 和 VC Table 7). 成功写 SENC 文件,把文件内容从零时文件拷贝到指定文件,删除零时文件。完成。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号