91学术服务平台

您好,欢迎来到91学术官网!站长邮箱:91xszz@sina.com

发布论文

论文咨询

探究如何绘制河床断面图控件

  2020-06-08    528  上传者:管理员

摘要:本文阐述了一种河床断面图控件绘制方法,该河床断面图控件具备水深、距离、流速、我岸土质坡度、对岸土质坡度等显示功能,能够形象直观地展示测量的江河数据及河床变化情况,并可对关心的数据区域进行重点研究。本文对该方法进行介绍并给出了该方法在VC++6.0下的实现方式。实验结果证明,该方法具有可操作性和实用性。

  • 关键词:
  • 控件绘制
  • 水文学
  • 水深数据
  • 河床断面图
  • 滑动窗口过滤法
  • 加入收藏

本文阐述了一种河床断面图控件绘制方法,该河床断面图控件具备水深、距离、流速、我岸土质坡度、对岸土质坡度等显示功能,能够形象直观地展示测量的江河数据及河床变化情况,并可对关心的数据区域进行重点研究。本文对该方法进行介绍并给出了该方法在VC++6.0下的实现方式。实验结果证明,该方法具有可操作性和实用性。

在江河测量过程中,存在数据类型多、数据量大且部分数据不准确、误差大的现象,无法准确直观地为用户呈现测量位置的河床情况。本文提供了一种河床断面图控件绘制方法,能够加载包括水深、距离、流速等在内的多类测量数据,基于滑动窗口过滤法对水深数据进行提取,对异常值进行修正,形成真实准确的河床断面图。


1、绘制步骤


数据保存:

针对江河测量过程中参数比较多的特点,定义河床断面结构体;针对数据动态变化的特点,构建河床断面数据动态链表,具体结构如下所示:

其中nIndex用于标示浅水区采集点顺序,flag为枚举值表示采集位置(0:我岸浅水区1:深水区2:对岸浅水区3:岸边),dSS表示当前位置水深,dJD表示经度,dWD表示纬度,dJl表示离我岸距离。将采集的水深数据结构体HCDM-Data逐一追加至河床断面数据链表m_HCDMdataList中。

绘制流程:

将采集的水深数据结构体追加至m_HCDMdataList后,采用内存绘图方式实现绘图更新,降低绘图闪烁。通过发送绘图消息触发OnPaint(),在函数体内处理m_HCDMdataL-ist链表,基于滑动窗口过滤法进行数据提取、坐标转化,实现绘图更新。

1.1数据加载

将采集的水深数据结构体追加至数据列表m_HCDMdataList中,并将追加数据与当前最大最小值进行比较,及时更新数据最大值最小值,用于后续Y轴计量单位的调整与自适应。使用m_fHCDMStartY、m_fHCDMEndY记录Y轴适应范围。针对控件放大需求,使用m_nHCDMEndindex、m_nHCDMStartindex记录数据索引值。m_nHCDMStartindex为开始索引;m_nHCDMEndindex为结束索引。正常状态下m_nHCDMStartindex值为0,m_nHCDMEndindex为数据链表长度减1;放大状态下,nHCDMStartindex为选定区域最左侧数据索引值,m_nHCDMEndindex为选定区域最右侧数据索引值。

1.2图形绘制

绘图函数主要基于滑动窗口过滤法对数据链表中结构体数据进行提取,对异常值进行修正,完成河床断面图绘制。算法流程如图1所示。

图1算法流程

intnSize=m_nHCDMEndindex-m_nHCDMStartindex+1;

nSize为河床断面图中需要绘制的数据元素数量,遍历所有数据元素进行坐标转换。

其中X轴坐标转换如下:

longlHCDMTemp=m_rcHCDMGrid.left(long)(m_rcHCD-MGrid.Width()*sIndex/(m_nHCDMEndindex-m_nHCDM-Startindex));

sIndex记录遍历循环索引值,m_rcHCDMGrid为矩形绘图区域。

Y轴坐标转换如下:

longlHCDMTemp=(m_rcHCDMGrid.bottom)-(long)(((fValue-m_fHCDMStartY)*m_rcHCDMGrid.Height())/(m_fHCDMEndY-m_fHCDMStartY));

fValue为数据节点值,即河床断面数据结构体中的fdata。

完成坐标转换后,采用VC自带函数Moveto(),Lineto()等绘制图形。

1.3放大功能

鼠标通过在显示区域内拖动选择某一块,能够进行放大显示。此功能核心点为坐标信息的逆转换。

在左键响应的OnLButtonDown函数中,获取m_nHCDMStartindex和m_fHCDMEndY。

fY=m_fHCDMStartY+(m_rcHCDMGrid.bottom-point.y)*(m_fHCD-MEndY-m_fHCDMStartY)/m_rcHCDMGrid.Height();

将计算获得的fy作为下一步绘图的m_fHCDMEndY。

intindex=

m_nHCDMStartindex+(int)((pt.x-m_rcHCDMGrid.left)/m_rcHCD-MGrid.Width()*m_nHCDMEndindex-m_nHCDMStartindex);

将计算获得的index作为下一步绘图的m_nHCDMStartindex。

在右键响应的OnLButtonUp函数中,参照上述策略,获取m_nHCD-MEndindex和m_fHCDMStartY。

最后通过发送绘图消息完成重绘操作。


2、结论


本方法在VC++6.0开发环境下,进行河床断面图控件的绘图实现。

所绘河床断面图如图2所示:

图2河床断面图

实验结果表明,本绘制方法能够真实准确地反映河床变化情况,并可根据需要进行放大。


刘子龙.一种河床断面图控件的绘制方法[J].电子世界,2020(08):76-77.

分享:

91学术论文范文

相关论文

推荐期刊

网友评论

加载更多

我要评论

大学物理

期刊名称:大学物理

期刊人气:2173

期刊详情

主管单位:中国科学技术协会

主办单位:中国物理学会

出版地方:北京

专业分类:科学

国际刊号: 1000-0712

国内刊号:11-1910/O4

邮发代号:82-320

创刊时间:1982年

发行周期:月刊

期刊开本:大16开

见刊时间:10-12个月

论文导航

查看更多

相关期刊

热门论文

【91学术】(www.91xueshu.com)属于综合性学术交流平台,信息来自源互联网共享,如有版权协议请告知删除,ICP备案:冀ICP备19018493号

微信咨询

返回顶部

发布论文

上传文件

发布论文

上传文件

发布论文

您的论文已提交,我们会尽快联系您,请耐心等待!

知 道 了

登录

点击换一张
点击换一张
已经有账号?立即登录
已经有账号?立即登录

找回密码

找回密码

你的密码已发送到您的邮箱,请查看!

确 定