当前位置: 首页 > Web前端 > HTML5

高速公路监管系统大屏可视化

时间:2023-04-05 23:24:30 HTML5

0x00项目背景本项目用于高速公路监管。高速公路监理包括:高速公路设备运行、设备维修、道路养护;交通流量分析、交通拥堵分析、拥堵溯源;事故分析、事件信息发布等0x01设计图该项目目前主要是预览项目,因此设计图层面主要使用客户提供的图片。我们的设计团队参与度不高。下面是客户的设计图:0x02绘制道路的实际效果比较复杂,比如马路上有各种各样的线(斑马线、黄线、白线、实线、虚线等)。但这些都不是这个系统中最重要的元素,所以可以考虑忽略它们。因此,我们使用带有边缘效果的路径进行模拟,效果如下:绘制的逻辑其实很简单,先绘制线宽较大的路径,然后换成较小的线宽和不同的绘制路径一次的颜色。大致的绘制逻辑如下:ctx.save();ctx.beginPath();ctx.lineJoin='圆形';//ctx.lineCap='round';points.forEach(({x,y},index)=>{ctx[index?'lineTo':'moveTo'](x,y);})ctx.lineWidth=width;ctx.strokeStyle=sideColor;ctx.stroke();ctx.shadowBlur=0;ctx.globalCompositeOperation='source-over';ctx.lineWidth=宽度*0.5;ctx.strokeStyle=midColor;ctx.stroke();在编辑器中,添加一个道路组件,点击道路组件,就可以开始绘制道路了:editbydotPath,即可以编辑道路的方向。需要注意的是,技术上使用了自动平滑技术,原来的尖角会变得平滑。导出函数createSmoothCurvePoints(points,tension=0.5,closed=false,numberOfSegments=16){if(points.length<2){returnpoints;}//展开数组points=expandPointArr(points);letps=points.slice(0),//克隆数组,这样我们就不会改变原始结果=[],//结果点x,y,//我们的x,y坐标t1x,t2x,t1y,t2y,//张力向量c1,c2,c3,c4,//基点st,t,i;//基于段数的步骤//该算法需要指向实际点数组的前一个点和下一个点。//检查我们是绘制闭合曲线还是开放曲线。//如果关闭,则将结束点复制到开始,将第一个点复制到结束//如果打开,将第一个点复制到befinning,将结束点复制到结束if(closed){ps.unshift(points[points.length-1]);ps.unshift(points[points.length-2]);ps.unshift(points[points.length-1]);ps.unshift(points[points.length-2]);ps.push(点[0]);ps.push(点[1]);}else{ps.unshift(点[1]);//复制第一个点并在开头插入ps.unshift(points[0]);ps.push(points[points.length-2]);//复制最后一个点并追加ps.push(points[points.length-1]);}//1.循环遍历点数组//2.循环遍历前后2个点+1e个点之间的每段for(i=2;i{ctx[index?'lineTo':'moveTo'](x,y);})ctx.closePath();ctx[是填充?'填充':'中风']();ctx.restore();}最终的绘制效果如上图所示。龙门架的绘制是多个立方体组合的绘制。需要注意的一点就是要注意多个立方体的绘制顺序,这会涉及到遮挡关系的正确性。在编辑器中,可以通过调整它的长、宽、高和y轴旋转角度来改变它的显示形式:0x04招牌图招牌是道路上常见的物体。它用于各种提醒。在本系统中,招牌的展示效果如下:绘制思路其实和之前的门框类似,都是由立方体组成。因此,这里不再赘述。0x05山的绘制由于山是一个比较复杂的模型,程序直接使用了设计师设计的图形。如下图所示:使用设计师设计的图片作为网元图片,拖放到场景中即可。0x05常用的echarts图表和扩展图表集成在图表的绘图编辑器中。您可以直接将其拖放到场景中。比如下图裁剪出一些图表,包括直方图、饼图、曲线图:将图表直接拖到场景中,生成图表效果,如下图:并且可以配置图表的数据在属性框中。这里为了演示,使用了静态数据;动态数据也可以连接到上面两个。0x06最终效果综合以上所有效果,最终编辑出一个demo页面,如下图:有兴趣获取demo,请发邮件至:terry.tan@servasoft.com关注我公众号《ITman彪叔》