发明名称 一种基于电子海图的海水深度等值线生成方法
摘要 本发明属于海洋地理信息系统领域,具体涉及一种基于电子海图的海水深度等值线生成方法。根据航海作业区域选择用于水深数据提取的电子海图;从电子海图中提取水深数据,生成离散数据源;利用克里金插值法对离散数据源进行插值,生成网格水深数据;利用克里金插值算法逐一对网格G<sub>ij</sub>(x<sub>i</sub>,y<sub>j</sub>)处的水深h<sub>ij</sub>进行插值;利用关联表法生成水深等值线;等值线平滑和标注;水深等值线与电子海图叠加显示。本发明以电子海图中的水深数据为离散数据源,生成海水深度等值线,并与电子海图进行叠加显示,可以为航海作业人员提供直观、形象、可靠的海水深度信息。
申请公布号 CN103914618A 申请公布日期 2014.07.09
申请号 CN201410121159.9 申请日期 2014.03.28
申请人 哈尔滨工程大学 发明人 刘厂;高峰;刘利强;李宁;张振兴
分类号 G06F19/00(2011.01)I;G06F17/30(2006.01)I;G06T5/00(2006.01)I 主分类号 G06F19/00(2011.01)I
代理机构 代理人
主权项 一种基于电子海图的海水深度等值线生成方法,其特征在于:(1)根据航海作业区域选择用于水深数据提取的电子海图:(1.1)确定航海作业区域:航海作业区域Ω的经纬度范围为(BLat~ELat),(BLon~ELon),水深数据提取海区Ω<sub>1</sub>的范围为(BLat‑temp~ELat+temp),(BLon‑temp~ELon+temp),其中temp>0,单位为度:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>temp</mi><mo>=</mo><mfrac><mrow><mi>Max</mi><mrow><mo>(</mo><mi>fabs</mi><mrow><mo>(</mo><mi>Blon</mi><mo>-</mo><mi>Elon</mi><mo>)</mo></mrow><mo>,</mo><mi>fabs</mi><mrow><mo>(</mo><mi>Blat</mi><mo>-</mo><mi>Elat</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mn>5</mn></mfrac><mo>;</mo></mrow>]]></math><img file="FDA0000483639220000011.GIF" wi="1057" he="129" /></maths>(1.2)选择电子海图:逐一判断海图数据库中的电子海图,如果水深数据提取海区Ω<sub>1</sub>与当前电子海图的覆盖区域有交集,将电子海图的名字存入待提取海图列表MapList,直到所有比例尺的海图均判断完毕为止;(2)从电子海图中提取水深数据,生成离散数据源:(2.1)从MapList中选择一幅尚未进行水深提取的电子海图;(2.2)打开选择的电子海图文件,找到水深层所在的位置;(2.3)读取水深层内的离散水深数据,判断当前水深是否在海区Ω<sub>1</sub>内,若水深所在位置在Ω<sub>1</sub>内,则将水深信息经度、纬度和水深值存储到Db.dat文件中,重复操作直到此海图中的所有水深数据均进行判断;(2.4)判断MapList中是否还有尚未进行水深提取的电子海图,若有则从中选择一幅电子海图并执行步骤(2.2),否则说明水深数据提取完毕,Db.dat存储的即是进行插值的离散数据源;(3)利用克里金插值法对离散数据源进行插值,生成网格水深数据:(3.1)将航海作业区域Ω划分为M×N个网格,其中M为沿经度方向的网格数,N为沿纬度方向的网格数,G<sub>ij</sub>(x<sub>i</sub>,y<sub>j</sub>)表示第i行,第j列处的网格,x<sub>i</sub>为网格中心的经度,y<sub>j</sub>为网格中心的纬度,网格边长l为<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>l</mi><mo>=</mo><mi>Max</mi><mrow><mo>(</mo><mfrac><mrow><mi>fabs</mi><mrow><mo>(</mo><mi>Blon</mi><mo>-</mo><mi>Elon</mi><mo>)</mo></mrow></mrow><mi>N</mi></mfrac><mo>,</mo><mfrac><mrow><mi>fabs</mi><mrow><mo>(</mo><mi>Blat</mi><mo>-</mo><mi>Elat</mi><mo>)</mo></mrow></mrow><mi>N</mi></mfrac><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000483639220000012.GIF" wi="992" he="130" /></maths>保持l≤0.05度;(3.2)利用克里金插值算法逐一对网格G<sub>ij</sub>(x<sub>i</sub>,y<sub>j</sub>)处的水深h<sub>ij</sub>进行插值:取以(x<sub>i</sub>,y<sub>j</sub>)为中心,边长为L的正方形区域内的水深数据为参考水深,其中L=2ωl;ω>4,保持参数水深的个数W大于3;l为网格边长,<img file="FDA0000483639220000021.GIF" wi="278" he="133" />hk为第k个参考水深的值,<img file="FDA0000483639220000022.GIF" wi="257" he="211" />(4)利用关联表法生成水深等值线:(4.1)建立关联表:(4.1.1)节点链表:用节点链表存储所有节点信息,经度、纬度和深度值:<img file="FDA0000483639220000023.GIF" wi="851" he="647" />(4.1.2)边链表:边链表存储每条边所包含的两个节点信息和每条边所属的两个邻面信息:<img file="FDA0000483639220000024.GIF" wi="1369" he="842" />(4.1.3)面链表:面链表存储它所包含的四条边在边链表中的索引号,其数据结构设计如下:<img file="FDA0000483639220000025.GIF" wi="945" he="454" /><img file="FDA0000483639220000031.GIF" wi="847" he="263" />(4.1.4)索引号:从网格左上角开始,按照从左至右,从上至下的顺序逐个进行标记,对于处于网格区域边界处的网格边,对于位于网格区域边界的网格边,把边链表中的下侧网格面的索引号标记为‑1;(4.2)等值线追踪:将航海作业区域Ω内的水深范围按照间隔进行划分,计算出每一条要追踪的等值线属性值,航海作业区域Ω的最大水深为H<sub>max</sub>,最小水深为H<sub>min</sub>,等值线属性间隔为Δh,第i条等值线的属性值H<sub>i</sub>=H<sub>min</sub>+Δh×(i‑1);利用双向追踪法对于任一属性值的等值线进行追踪:(4.2.1)建立搜索标记数组边搜索标记数组中的元素与边链表中的边一一对应,数组中所有元素初始化为FALSE,每追踪到一个等值点,搜索标记数组中的对应元素设为TRUE;(4.2.2)追踪分支等值线查询边搜索标记数组,以没有被搜索过的边作为等值线起点,开始双向追踪分支等值线,建立分支等值线的等值点链表并把等值点信息存入文件:(4.2.2.1)初始化前向交点链表ForArray和后向交点链表BackArray,分别用来存储前向追踪和后向追踪过程中所得到的等值点信息;(4.2.2.2)扫描边链表,找到等值点,作为分支等值线的线头,把等值点存入前向交点链表ForArray中;(4.2.2.3)以步骤(4.2.2.2)中找到的等值点为起点,进行等值线前向追踪,当追踪到达区域边界时,即通过边链表检索到的面的索引值为‑1时,或者在网格内找不到等值线出口时,等值线追踪结束;(4.2.2.4)以等值线线头为起点,进行等值线后向追踪,当追踪到达区域边界时,即通过边链表检索到的面的索引值为‑1时,或者在网格内找不到等值线出口时,等值线追踪结束;(4.2.2.5)建立分支等值线所有等值点链表,根据前向交点表ForArray和后向交点表BackArray,建立包含分支等值线所有等值点的等值点链表AllArray;(4.2.3)遍历边搜索标记数组,判断是否已经把边链表中的所有边搜索过,如果边链表中还有边没有被搜索过,则执行步骤(4.2.2),继续搜索等值线,如果边链表中的所有边都被搜索过,则属性值的所有等值线搜索完毕;(5)等值线平滑和标注:采用三次B样条算法对等值线进行平滑处理;从等值点文件中以一定间隔读取等值点数据,并将等值点数据以等值线标注结构体的形式存入等值线标记数组,根据等值线标记数组中存储的等值点坐标确定要写标注的矩形区域,判断矩形区域是否在航海作业区域Ω外,如果不在Ω外,则可以标注等值线,等值线标注结构体为:<img file="FDA0000483639220000041.GIF" wi="1275" he="646" />(6)水深等值线与电子海图叠加显示:从等值线文件中读取数值等值线上的数据点,将等值点的经纬度坐标转换为海图坐标系下的图上坐标,在电子海图上将各等值点连接成线即可得到该数值下的等值线,采用步骤(5)生成的等值线标记数组对绘制好的等值线进行标注。
地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室