一种基于形态特征的倒钩河自动化识别方法与流程

文档序号:15933659发布日期:2018-11-14 02:02阅读:459来源:国知局

本发明涉及地理信息技术和水文学领域,具体涉及一种基于形态特征的倒钩河自动化识别方法。

背景技术

河流是作用于地球表层的最广泛和活跃的外营力,是陆地水循环的主要路径。水系是不同等级的河流在流域内构成的河道系统。除了受自然环境的控制,水系形态特征的形成还受到地质构造的影响,从而在平面图形上会呈现出特有的具有展部排列规律的排列。前人已有大量研究表明水系样式、河流阶地、河谷形态等都会对褶皱和断裂等构造活动做出积极响应。通过对水系密度和形态特征等水系特性的分析,能够间接的实现对地质构造和地壳运动的解析。

倒钩状水系的特征是支流呈反向流动,即以钝角汇入主流中。倒钩状水系中支流称之为倒钩河,多由于新构造运动而迫使河流改道形成。因此快速实现对倒钩河的自动化识别对于研究构造运动具有十分重要的意义。

现阶段基于形态特征对特定河流的识别大多都是由解译人员人工完成的,解译人员在关于水系的专题地图上,借助自身的专业知识和判读经验,对水系的形态特征做出区分判断,进而识别出特定河流。但是这种人工的识别方式,不但识别效率低,提取效果差,而且在实际的人工操作时容易因为粗心而导致误判和漏判。



技术实现要素:

发明目的:为了克服现有技术中因为人工识别存在的不足,提供一种基于形态特征的倒钩河自动化识别方法,借助计算机通过识别水系的形态特征来自动化识别特定河流,从倒钩河的形态特征出发,通过计算河流流向、计算河流交汇角等环节,形成一种高效的倒钩河自动化识别方法。

技术方案:为实现上述目的,本发明提供一种基于形态特征的倒钩河自动化识别方法,包括如下步骤:

1)基于研究区的水系矢量线图层和研究区的dem数据,计算每条河流的流向,并将流向信息存储到属性flowid;

2)根据得到的属性flowid计算一河流交汇处的河流交汇角θ;

3)根据公式(1)识别出倒钩河:

其中θ为当前支流汇入主流处的河流交汇角;

4)循环执行步骤2到步骤3,直至识别出所有的倒钩河;

5)生成倒钩河图层。

进一步地,所述步骤1的具体方法步骤为:

1-1)读取矢量线图层river中的河流线数据到集合r={ri|i=0,1,2……nr-1},其中nr为river中元素的个数,所述河流线数据river包含记录出口端点所在另一条河流id的属性flowid;

1-2)基于集合r创建存储所有河流端点的矢量点图层point,所述矢量点图层point包含记录高程的属性height;

1-3)基于研究区域的dem数据给矢量点图层point进行高程属性height赋值;

1-4)读取point中的数据到集合p={pi|i=0,1,2……np-1},其中np为point中元素的个数;

1-5)基于集合p,获取河流要素ri的两端点pm和pn;

1-6)根据公式(2)获取河流要素ri的出口端点,记为pto;

其中hm、hn分别为端点pm和pn的高程。

1-7)基于集合p和集合r,获取端点pto所在的另一条河流要素rj的序号j,给河流要素ri的属性flowid赋值为j;若不存在rj,给河流要素ri的属性flowid赋值为-1;

1-8)循环执行步骤1-5到步骤1-7,直至所有河流要素的属性flowid都已被赋值。

进一步地,所述步骤2的具体方法步骤为:

2-1)读取一条河流要素ri,其flowid属性值记为j。若j≠=-1,读取河流要素rj;否则,执行步骤2-1;

2-2)获取河流要素ri的出口端点,即为河流交汇点,记为o;

2-3)获取河流要素ri的直线河段集合pi。定义子河段集合pi,先将o点放入集合pi;

2-4)依次从ri中提取一个点放入集合pi,具体以o点为起点方向,从ri的第二个点开始;

2-5)根据公式(3)计算当前集合pi子河段的直线近似度si;

其中ie为当前集合pi子河段的终点,||o-ie||表示当前集合pi子河段的实际长度,len(o,ie)表示点o与ie之间的理想直线长度。

2-6)若si≤st,st为用户设置最大直线近似度阈值,且还未将河流端点放入集合pi,执行步骤2-4;否则,执行步骤2-7;

2-7)若si>st,从集合pi中删除最后加入的点;

2-8)若当前直线子河段的实际长度li小于最短平直河段长度阈值lt,执行步骤2-1;否则,执行步骤2-9;

2-9)获取河流要素rj下游河段的直线河段集合pj。定义子河段集合pj,先将o点放入集合pj;以o点为起点方向,从rj下游河段的第二个点开始,循环提取点放入集合pj,并执行步骤2-5到步骤2-7,直至生成河流要素rj下游河段的直线河段集合pj;

2-10)从直线河段集合pi、pj,分别提取终点ie、je;

2-11)根据公式(4)计算方向向量ni和nj;

其中(o.x,o.y)是起点o的坐标,(ie.x,ie.y)、(je.x,je.y)分别为终点ie、je的坐标。

2-12)将ni和nj代入公式(5),计算两方向向量的夹角θ,即为所求的“河流交汇角”。

其中(ni.x,ni.y)为向量ni的坐标值,(nj.x,nj.y)为向量nj的坐标值。

有益效果:本发明与现有技术相比,实现了对于倒钩河的计算机自动化识别,较原有的人工识别方式相比,不但识别的效率有了明显提高,提取的效果也得到了大幅提升,而且有效的避免了人工操作时因为粗心而导致的误判和漏判。

附图说明

图1为本实施例中采用的实验数据图;

图2为本发明的结构流程图;

图3为本发明中计算夹角特征方法的结构流程图;

图4为本发明中河流交汇角的示意图;

图5为本实施例中形成的河流端点示意图;

图6为本实施例中提取的倒钩河示意图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明。

如图1所示,本实施例的实验数据采用的是庐山地区的水系数据,区内水系类型丰富,且构造运动对其形态形成的影响作用较为明显,参照图1我们做进一步的说明。

如图2所示,本实施例提供一种基于形态特征的倒钩河自动化识别方法,包括如下步骤:

1)基于研究区的水系矢量线图层和研究区的dem数据,计算每条河流的流向,并将流向信息存储到属性flowid:

1-1)读取矢量线图层river中的河流线数据(含记录出口端点所在另一条河流id的属性flowid)到集合r={ri|i=0,1,2……nr-1},其中nr为river中元素的个数。本实施例中,nr=196;

1-2)基于集合r创建存储所有河流端点的矢量点图层point(含记录高程的属性height)。提取结果如图5所示;

1-3)基于研究区域的dem数据给点图层point进行高程属性height赋值;

1-4)读取point中的数据到集合p={pi|i=0,1,2……np-1},其中np为point中元素的个数。本实施例中,np=398;

1-5)基于集合p,获取河流要素ri的两端点pm和pn。本实施例中,河流r0的两端点分别为p0和p1;

1-6)根据公式(2)获取河流要素ri的出口端点,记为pto。本实施例中,对于河流r0,因为h0>h1,所以河流r0的出口端点pto=p1;

其中hm、hn分别为端点pm和pn的高程。

1-7)基于集合p和集合r,获取端点pto所在的另一条河流要素rj的序号j,给河流要素ri的属性flowid赋值为j;若不存在rj,给河流要素ri的属性flowid赋值为-1。本实施例中,河流要素r0的出口端点为p1,不存在rj,所以河流要素r0的属性flowid赋值为-1;河流要素r3的出口端点p7所在的另一条河流要素rj的序号j=2,所以f3=2;

1-8)循环执行步骤1-5到步骤1-7,直至所有河流要素的属性flowid都已被赋值。

2)如图3所示,根据得到的属性flowid计算一河流交汇处的河流交汇角θ:

2-1)读取一条河流要素ri,其flowid属性值记为j。若j≠=-1,读取河流要素rj;否则,执行步骤2-1。本实施例中,r6的j=1,即j≠=-1,读取河流r1;

2-2)获取河流要素ri的出口端点,即为河流交汇点,记为o。本实施例中,河流r6的出口端点即点o为(39393875.0,3278630.0);

2-3)获取河流要素ri的直线河段集合pi。定义子河段集合pi,先将o点放入集合pi;

2-4)依次从ri中提取一个点放入集合pi(以o点为起点方向,从ri的第二个点开始);本实施例中,河流r6在第12次提取点时,将点(39393861.3,3278511.4)放入集合pi;

2-5)根据公式(3)计算当前集合pi子河段的直线近似度si。本实施例中,河流r6第12次循环后集合pi子河段的直线近似度si=1.024;

其中ie为当前集合pi子河段的终点,||o-ie||表示当前集合pi子河段的实际长度,len(o,ie)表示点o与ie之间的理想直线长度。

2-6)若si≤st(st为用户设置最大直线近似度阈值),且还未将河流端点放入集合pi,执行步骤2-4;否则,执行步骤2-7。本实施例中,设置的最大直线近似度阈值st=1.05,河流r6第12次循环提取点放入集合pi后直线近似度si≤st,且还未将河流端点加入进来,循环执行步骤2-4;

2-7)若si>st,从集合pi中删除最后加入的点。本实施例中,河流r6第16次循环提取点放入集合pi后直线近似度si=1.069>st,集合pi中删除最后加入的点(39393820.3,3278470.7);

2-8)若当前直线子河段的实际长度li小于最短平直河段长度阈值lt,执行步骤2-1;否则,执行步骤2-9。本实施例中,用户设置的最短平直河段长度lt=100m,河流r6当前直线子河段的实际长度li=180.1>lt,执行步骤2-9;

2-9)获取河流要素rj下游河段的直线河段集合pj。定义子河段集合pj,先将o点放入集合pj;以o点为起点方向,从rj下游河段的第二个点开始,循环提取点放入集合pj,并执行步骤2-5到步骤2-7,直至生成河流要素rj下游河段的直线河段集合pj;

2-10)从直线河段集合pi、pj,分别提取终点ie、je。本实施例中,当河流要素ri为r6,河流要素rj为r1时,ie=(39393848.1,3278497.7),je=(39393691.4,3278755.5);

2-11)如图4所示,根据公式(4)计算方向向量ni和nj。本实施例中,当河流要素ri为r6,河流要素rj为r1时,ni=(26.9,132.3),nj=(-183.6,125.5);

其中(o.x,o.y)是起点o的坐标,(ie.x,ie.y)、(je.x,je.y)分别为终点ie、je的坐标。

2-12)将ni和nj代入公式(5),计算两方向向量的夹角θ,即为所求的“河流交汇角”。本实施例中,当河流要素ri为r6,河流要素rj为r1时,向量ni和nj的夹角θ=67.1°。

其中(ni.x,ni.y)为向量ni的坐标值,(nj.x,nj.y)为向量nj的坐标值。

3)根据公式(1)识别出倒钩河:

其中θ为当前支流汇入主流处的河流交汇角;

本实施例中,河流r6汇入河流r1的河流交汇角θ为67.1°<90°,所以河流r85不是倒钩河;

4)循环执行步骤2到步骤3,直至识别出所有的倒钩河;

5)生成倒钩河图层。本实施例中,共提取出6条倒钩河,提取结果如图6所示。

当前第1页1 2 
网友询问留言 已有1条留言
  • 访客 来自[河南省郑州市移动] 2018年12月11日 10:59
    观察比较细腻,设想周全,有很强使用性
    0
1