煤矿智能仓储系统研究与设计
- 仓储粮害虫防治研究进展 [2022-03-03]
- 面向电网企业的仓储配送网络优化... [2022-03-03]
- 基于ISM和BN的危险品仓储系统安... [2022-03-03]
- 转型途中,江苏仓储业期待“轻装... [2022-02-23]
一种应用于智能仓储行业的粮温分布图及等温曲线绘制方法
1 GDI+概述
GDI (Graphics Device Interface) 是Windows操作系统的传统图形子系统, 它的主要任务是负责系统与绘图程序之间的信息交换, 处理所有Windows程序的图形输出。在Windows操作系统下, 绝大多数具备图形界面的应用程序都离不开GDI, 利用GDI所提供的众多函数就可以方便地在屏幕、打印机及其它输出设备上输出图形、文本等操作。GDI的出现使程序员无需要关心硬件设备及设备驱动, 就可以将应用程序的输出转化为硬件设备上输出, 实现了程序开发者于硬件设备的隔离, 方便了开发工作。
传统GDI是随Windows 1.0于1985年11月推出的, 新的GDI+则是随Windows XP于2001年10月推出的GDI的改进版, 增加了α变色、渐变画刷、样条曲线、矩阵变换、图像处理、持久路径等新功能。出于兼容性考虑, Windows XP仍然支持以前版本的GDI, 但是在开发新应用程序的时候, 推荐使用GDI+, 因为GDI+对以前的Windows版本中的GDI进行了优化, 具有更好的性能。随着Windows Vista及.NET框架3.0的推出, 微软于2006年11月又推出了基于Direct X和.NET框架的全新图形子系统WPF (Windows Presentation Foundation) , 它统一了桌面和浏览器等客户端应用程序的图形界面, 采用XML声明式编程, 将用户界面的设计和编程彻底分离开来, 是Windows的下一代GUI显示系统。
本文所使用GDI+的渐变画刷绘制具有边界效果的墙壁剖面, 看起来更具有立体感。
2 粮仓三维模型的绘制
GDI+绘图接口一般用来绘制二维平面图形, 本系统以平行四边形为绘图单元, 通过使用结构实体几何法来绘制具有三维效果的粮仓模型, 先用平行四边形来绘制基本的立体图形:长方体, 然后将长方体组合构造出仓房模型, 当遇到边界需要表示时, 使用光线投射方法来实现:
首先定义一个路径对象, 传入需要绘制的平行四边形四个顶点的坐标, 然后定义一个线性渐变画刷, 传入渐变的起始位置、渐变颜色值和渐变模式, 最后将路径对象和画刷对象传入路径填充函数绘制一个具有渐变效果的平行四边形。通过对多个平行四边形和矩形对象的组合就可以绘制具有三维效果的粮仓模型。
3 粮仓内粮温分布的数值显示
有了粮仓模型, 接下来就需要将各个测点的温度值在模型中显示出来。现场的粮仓内部的测温点的分布一般都是按照行、列、层进行规制排布, 为了能够在平面内直观显示, 笔者将测温点按行、列、层的切面来显示, 每种类型的切面用索引来标记, 这样就把粮仓的三维空间在每个维度上按行、列、层的总数等分成多个切面。用户可以根据需要选择查看的切面类型和索引, 这样就可以按不同的维度来查看每个切面内所有的测温点的数据。为了能够让用户方便查找出异常的温度点, 还对异常的温度点值进行报警提示, 用颜色进行标记。由于粮仓模型和测温点分布图都是按现场的组态信息来绘制的, 软件在显示测温点数值的同时也显示其位置信息, 用户可以很直观地了解到粮仓内的温度分布情况。
4 粮仓内粮温的图形显示
通过对粮仓内粮温的数字化显示, 用户可以方便地看到各个测温点的数值。但在实际应用中, 粮仓内的测温点的数量总是有限的, 因此它们的分布是离散的, 每个测温点和其平面内相邻的测温点之间的区域的温度值是无法测到的。这些区域也是储粮区, 它们的温度情况, 用户也需要知道。这时就需要一种插值计算方法来根据已知区域的温度值来近似的计算出相邻区域的温度值。
根据实际的研究经验, 使用反距离加权插值算法 (IDW) , 可以很好地模拟温度场的分布。反距离权重法主要依赖于反距离的幂值, 幂参数可基于距离输出点的距离来控制已知点对内插值的影响。幂参数是一个正实数, 默认值为2 (一般0.5到3的值可获得最合理的结果) 。通过定义更高的幂值, 可以进一步强调最近点。因此, 邻近数据将受到更大影响, 表面会变得更加详细 (更不平滑) 。随着幂数的增大, 内插值将逐渐接近最近采样点的值。指定较小的幂值将对距离较远的周围点产生更大的影响, 从而导致平面更加平滑。
IDW插值方法假定每个输入点都有着局部的影响, 这种影响随着距离的增加而减弱。计算公式及步骤如下:
1) 计算未知点 (x0, y0) 到参与计算的已知点 (xi, yi) 的距离Di;
2) 计算每个点的权重:权重是距离的倒数的函数, p为幂参数, 取数值2;
3) Zi为已知点的温度值。
例如给定平面内4个测点的温度值和坐标就可以计算出这4个测点组成的矩形区域内任意一点的温度值, 通过这样的插值算法, 就可以根据平面内有限的测温点计算出整个平面的温度分布情况。为了能够更形象地了解到温度分布情况, 本系统还将建立一种温度和颜色转换关系, 将温度值用不同的颜色来表示, 通过颜色的渐进变化来反映出温度的变化趋势和分布情况, 用户查看更加直观和高效。
5 等温曲线的绘制
(1) 原理及算法
简单来说就是将粮温切面按照行列划分为方格, 每个方格顶点是一个粮温数据。首先, 假设方格上个顶点之间的数据是线性变化的。那么对于每个格子来说, 针对某一个等值线的值, 我们可以确定这条等值线是否会从格子的某一个边穿过, 具体位置, 在数据线性变化的前提下, 通过比值计算出对应的等值线的点。如图3所示:
假设每个格子顶点的值为30或32, 此时需要计算值为31的等值线。则比31小的顶点置为0, 比31大的值置为1, 则等值线必然穿过在0, 1之间的边。点离0点所在的距离根据线性变化的前提计算, 公式见图3。
在这种前提下, 存在四种可能, 即小方格上存在0个点、2个点 (对边) 、两个点 (临边) 、四个点。
然后遍历所有方格的边, 将所有等值线的点串联起来就成为了一条等值线。
在这里由于粮堆行列一般是10以下的, 因此在行列的基础上针对每个大方格将其细分为5个小方格, 使得绘制曲线更为平滑。例如粮堆层切面上, 行列数分别为5行6列。实际上在计算时行列数为25行30列, 化为的小格子上的顶点数值通过各顶点数值线性化计算出来。
(2) 显示效果
6 结束语
粮温分布图实际上就是在一个三维粮仓空间内, 根据有限的测温点数值对粮仓内部储粮空间内的温度情况进行模拟和重现。用户既可以在数值模式下看到每个测点精确的温度值, 也可以在图形模式下看到每个切面的温度分布情况, 同时再配合等温曲线的绘制, 可以看到整个切面的温度变化趋势。对研究粮仓内的温度场分布有很大的帮助, 也简化了用户对粮温数据的查看, 提高粮库管理人员的工作效率。