echarts画风向杆
1.安装echarts
2.引入echarts

4.获取数据,转换数据格式
windProfile.title.text = `${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format(
‘YYYY-MM-DD HH:mm’
)}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)}——水平风风羽图`
data.forEach(item => {
windProfile.xAxis.data.push(moment(item.time, ‘YYYY-MM-DD HH:mm:ss’).format(‘HH:mm’))
arr = item.fengKuoXianItems.filter(
i => heightRange.less * 1000 <= i.height && i.height <= heightRange.greater * 1000
)
arr.forEach(item1 => {
if (item1.direction && item1.speed) {
windProfile.series[0].data.push({
value: [
moment(item.time, ‘YYYY-MM-DD HH:mm:ss’).format(‘HH:mm’),
item1.height,
transformationSpeed(item1.speed),
item1.direction > 9999 ‘’ : getWindPower(item1.direction),
item1.speed > 9999 ‘’ : getWindSpeed(item1.speed),
item1.speed > 9999 ‘’ : item1.speed.toFixed(2)
],
label: {
rotate: -item1.direction,
color: `rgba(${getColor(colorData.value[0].stops, item1.speed).stop.join(‘,’)})`
}
})
}
})
})

1)转换字体根据风速转字体
const transformation = [
//风速转字体
[1, ‘m’, 0],
[3, ‘k’, 1],
[5, ‘1’, 2],
[7, ‘2’, 3],
[9, ‘3’, 4],
[11, ‘4’, 5],
[13, ‘5’, 6],
[15, ‘6’, 7],
[17, ‘7’, 8],
[19, ‘n’, 9],
[21, ‘8’, 10],
[23, ‘9’, 11],
[25, ‘:’, 12],
[27, ‘;’, 13],
[29, ‘<’, 14],
[31, ‘=’, 15],
[33, ‘>’, 16],
[35, ‘’, 17],
[37, ‘@’, 18],
[39, ‘A’, 19],
[41, ‘B’, 20],
[43, ‘C’, 21],
[45, ‘D’, 22],
[47, ‘E’, 23],
[49, ‘F’, 24],
[51, ‘G’, 25],
[53, ‘H’, 26],
[55, ‘I’, 27],
[57, ‘J’, 28],
[999, ‘K’, 28]
]
//根据风速转字体
const transformationSpeed = speed => {
for (let t = 0; t < transformation.length; t++) if (Number(speed) <= transformation[t][0]) return transformation[t][1]
return ‘0’
}
注意修改echarts里series的配置项

2)转换风向
const windPower = [
//风向
[11.25, ‘北风’],
[33.75, ‘东北风’],
[56.25, ‘东北风’],
[78.75, ‘东北风’],
[101.25, ‘东风’],
[123.75, ‘东南风’],
[146.25, ‘东南风’],
[168.75, ‘东南风’],
[191.25, ‘南风’],
[213.75, ‘西南风’],
[236.25, ‘西南风’],
[258.75, ‘西南风’],
[281.25, ‘西风’],
[303.75, ‘西北风’],
[326.25, ‘西北风’],
[348.75, ‘西北风’],
[1e3, ‘西北风’]
]
// 获取风向
const getWindPower = e => {
for (let t = 0; t < windPower.length; t++) if (e < windPower[t][0]) return windPower[t][1]
return ‘无风’
}
3)转换风速
const windSpeed = [
//风速
[0.2, 0],
[1.5, 1],
[3.3, 2],
[5.4, 3],
[7.9, 4],
[10.7, 5],
[13.8, 6],
[17.1, 7],
[20.7, 8],
[24.4, 9],
[28.4, 10],
[32.6, 11],
[36.9, 12],
[41.4, 13],
[46.1, 14],
[50.9, 15],
[56, 16],
[61.2, 17]
]
//获取风速
const getWindSpeed = e => {
for (let t = 0; t < windSpeed.length; t++) if (e < windSpeed[t][0]) return windSpeed[t][1].toFixed(2)
return ‘0’
}
4)转换风字体颜色
const colorData = ref([
{
stops: [
{ value: 0.2, stop: [176, 224, 248, 1] },
{ value: 2.6, stop: [144, 208, 248, 1] },
{ value: 3.4, stop: [120, 184, 248, 1] },
{ value: 5.5, stop: [80, 160, 240, 1] },
{ value: 8, stop: [60, 120, 220, 1] },
{ value: 10.8, stop: [40, 100, 200, 1] },
{ value: 13.9, stop: [0, 176, 8, 1] },
{ value: 17.2, stop: [248, 248, 0, 1] },
{ value: 20.8, stop: [248, 168, 0, 1] },
{ value: 24.5, stop: [248, 80, 0, 1] },
{ value: 28.5, stop: [248, 0, 0, 1] },
{ value: 32.7, stop: [248, 24, 80, 1] },
{ value: 37, stop: [240, 48, 152, 1] },
{ value: 46.2, stop: [232, 80, 232, 1] },
{ value: 51, stop: [224, 72, 72, 1] },
{ value: 56.1, stop: [200, 56, 56, 1] },
{ value: 61.3, stop: [160, 24, 32, 1] }
],
fieldName: ‘wind’
}
])
// 风字体颜色
const getColor = (e, speed) => {
let n = e[e.length - 1]
const i = e.find(e => {
if (speed <= e.value) return (n = e), n
})
return i && (n = i), n
}
欢迎补充,一起进步。
相关文章:
echarts画风向杆
1.安装echarts 2.引入echarts 4.获取数据,转换数据格式 windProfile.title.text ${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format( ‘YYYY-MM-DD HH:mm’ )}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)…...
【LeetCode每日一题】LeetCode 345.反转字符串中的元音字母
LeetCode 345.反转字符串中的元音字母 题目描述 给定一个字符串 s,你需要反转字符串中所有的元音字母,并返回新的字符串。 元音字母是 a, e, i, o, u,这些字母的大小写都会被考虑。 示例 1: 输入: s "hello" 输出: "holle…...
蓝桥杯练习生第四天
小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间&#x…...
cesium 常见的 entity 列表
Cesium 是一个用于创建3D地球和地图的开源JavaScript库。它允许开发者在Web浏览器中展示地理空间数据,并且支持多种类型的空间实体(entities)。 Entities是Cesium中用于表示地面上或空中的对象的一种高层次、易于使用的接口。它们可以用来表示点、线、多边形、模型等,并且可…...
Java旅程(五)Spring 框架与微服务架构 了解 JVM 内部原理和调优
在现代企业级应用中,Spring 框架和微服务架构已经成为主流技术,而 Java 虚拟机(JVM)的理解和调优对于保证应用的高性能和稳定性也至关重要。本篇博客将深入讲解 Spring 框架与微服务架构,并进一步探讨 JVM 内部原理和调…...
Niushop-master靶场漏洞
靶场搭建 将 niushop-master.zip 压缩包放到网站的根目录,解压后访问 浏览器访问 install.php ,根据提示安装即可 1.SQL注入漏洞 随便选择一种商品分类,发现有参数,测试注入 测试闭合发现页面报错有sql注入 应该是环境的问题&am…...
35道面向初中级前端的基础面试题
新鲜出炉的8月前端面试题 跨域资源共享 CORS 阮一峰 3. JSONP 是什么? 这是我认为写得比较通俗易懂的一篇文章jsonp原理详解——终于搞清楚jsonp是啥了。 4. 事件绑定的方式 嵌入dom 按钮 直接绑定 btn.onclick function(){} 事件监听 btn.addEventList…...
MFC用List Control 和Picture控件实现界面切换效果
添加List Control 和Picture控件 添加 3个子窗体 把子窗体边框设置为None, 样式设为Child 声明 CListCtrl m_listPageForm;void ShowForm(int nIndex);void CreatFormList();void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DD…...
1. 解决前端vue项目 vite打包内存溢出问题
探索问题原因: 项目开发时正常运行不影响,打包出现上图错误,意味着打包过程中消耗了太多的内存导致的。 解决方法: 在 package.json中的打包命令替换如下: 解决前: "build:dev": "vite…...
Springboot高并发乐观锁
Spring Boot分布式锁的主要缺点包括但不限于以下几点: 性能开销:使用分布式锁通常涉及到网络通信,这会引入额外的延迟和性能开销。例如,当使用Redis或Zookeeper实现分布式锁时,每次获取或释放锁都需要与这些服务进行交…...
【WPS安装】WPS编译错误总结:WPS编译失败+仅编译成功ungrib等
WPS编译错误总结:WPS编译失败仅编译成功ungrib等 WPS编译过程问题1:WPS编译失败错误1:gfortran: error: unrecognized command-line option ‘-convert’; did you mean ‘-fconvert’?解决方案 问题2:WPS编译三个exe文件只出现u…...
pytorch MoE(专家混合网络)的简单实现。
专家混合(Mixture of Experts, MoE)是一种深度学习模型架构,通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络(即子模型),然后根据门控网络(gating network)的输出…...
虚拟机VMware的安装问题ip错误,虚拟网卡
要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了,又重新安装,一般都会有问题 卸载重装vmware: 第一…...
Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门hello world输出【入门一】
开发环境搭建:Linux-Ubuntu下搭建ESP32的开发环境的步骤,使用乐鑫最新稳定版的esp-idf-CSDN博客 一、安装好开发环境后,在esp目录下再创建一个esp32的目录【用于编程测试demo】 二、进入esp32目录,打开终端【拷贝esp-idf的hello工…...
重温设计模式--命令模式
文章目录 命令模式的详细介绍C 代码示例C代码示例2 命令模式的详细介绍 定义与概念 命令模式属于行为型设计模式,它旨在将一个请求封装成一个对象,从而让你可以用不同的请求对客户端进行参数化,将请求的发送者和接收者解耦,并且能…...
电力通信规约-104实战
电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中,主要用来进行数据传输和转发,本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java,所以本篇将采用Java实例来进行讲解。首先我们搭建一…...
什么是事务
在数据库管理系统中,事务(Transaction)是执行一系列操作的最小工作单元,这些操作要么全部成功,要么全部失败。为了确保数据的一致性和完整性,事务被设计为具备四大特性,即原子性(Ato…...
数据结构:双向循坏链表
目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插,头删 ,尾插,尾删 1.1双向循环链表的结构 …...
3.1、SDH的5种标准容器
1、定义与作用 在 SDH(同步数字体系)中,标准容器(C)是一种用来装载各种速率的 PDH(准同步数字系列)信号的信息结构。它的主要作用是进行速率适配,使不同速率的 PDH 信号能够在 SDH 的…...
Jenkins介绍
Jenkins 是一款流行的开源自动化服务器,在软件开发和持续集成 / 持续交付(CI/CD)流程中发挥着关键作用。 一、主要功能 1.持续集成(CI) (1).自动构建:Jenkins 可以配置为监听代码仓…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
