当前位置: 首页 > news >正文

【定制项目】【M14 监测预警平台】百度地图区域绘制(时间轴)/柱状图/仪表图 - 关键技术 python flask + echarts

一、项目需求

项目名称:【某监测预警平台】

项目需求:气候数据:雨量,温湿度,PM,雷达回波,雷电预报等展示到可视化大屏

项目工期:10个工作日。

二、项目架构

  • 运行环境支持Windows,Linux类系统。
  • B/S架构,支持Chrome,IE,QQ等主流浏览器。
  • http服务器:Python Flask 框架;
  • 数据可视化:Echarts + BootStrap 库;

三、项目分析

1、http服务器:Python Flask 框架;

http 代码


# 主程序在这里
if __name__ == "__main__":
    # 开启线程,触发动态数据
    a = threading.Thread(target=daping.loop)
    a.start()

    # 开启 flask 服务
    app.run(host='0.0.0.0', port=80, debug=True)

接口解析

前端调用: datas

数据请求方式:GET或POST

数据响应:JSON

2、数据可视化: BootStrap + Echarts 库;

BootStrap布局

<body id="container_body" style="background-image: url(img/bg.png);
            background-repeat: no;
            background-size: 100%;">
      <div class="container_fluid" id="vue_app">
            <div class="row"
                  style="height:6%; margin:0;background-image: url(img/title.png); background-repeat: no; background-size: 100% 90%; margin-bottom: 6px;">
                  <div class="col">
                        <h4 id="container_h"
                              style="text-align: center; color: white; font-weight:bolder; margin-top: 10px; ">
                              监测预报预警平台</h4>
                  </div>
            </div>
            <div class="row" style="height:90%;">
                 .......
            </div>
            <div class="row" style="height:3%;">
                 .......
            </div>
      </div>
</body>

Echarts 仪表盘图形

 

function init_echart_gauge_prec(container) {
    var chartDom = document.getElementById(container);
    var myChart = echarts.init(chartDom);
    option = {
        title: {
            text: "24小时雨量",
            top: "5%",
            left: "2%",
            textStyle: {
                color: "RGBA(63,242,235,1)",
                fontSize: "12",
            },
        },
        series: [
            {
                type: "gauge",
                center: ["50%", "70%"],
                startAngle: 200,
                endAngle: -20,
                min: 0,
                max: 300,
                splitNumber: 6,
                // 标尺为红色
                itemStyle: {
                    color: "red",
                },
                progress: {
                    show: true,
                },
                pointer: {
                    show: false,
                },
                // 小刻度与坐标轴的距离
                axisTick: {
                    distance: -25,
                    splitNumber: 5,
                },
                // 分割线与坐标轴的距离
                splitLine: {
                    distance: -30,
                },
                // 刻度标签
                axisLabel: {
                    distance: -30,
                    color: "#999",
                },
                detail: {
                    valueAnimation: true,
                    width: "60%",
                    lineHeight: 30,
                    borderRadius: 8,
                    offsetCenter: [0, "-5%"],
                    // 表盘中间字体大小
                    fontSize: 20,
                    fontWeight: "bolder",
                    formatter: "{value} mm",
                    color: "orange",
                },
                data: [
                    {
                        value: 20,
                    },
                ],
            },
        ],
    };
    window.addEventListener("resize", function () {
        myChart.resize();
    });
    myChart.setOption(option);
}

Echarts 柱状图

 

function init_echart_line_area_chart(container) {
    var chartDom = document.getElementById(container);
    var myChart = echarts.init(chartDom);
    var option;

    option = {
        title: {
            text: "短时降雨预报",
            top: "5%",
            left: "2%",
            textStyle: {
                color: "RGBA(63,242,235,1)",
                fontSize: "12",
            },
        },
        grid: {
            left: "8%",
            right: "8%",
            top: "30%",
            bottom: "10%",
            containLabel: true,
        },
        tooltip: {
            trigger: "axis",
            formatter: "时间: {b}<br />{a}: {c}mm",
        },
        xAxis: {
            type: "category",
            axisLabel: {
                textStyle: {
                    color: "#999",
                    fontSize: 14,
                },
            },
            axisLine: {
                lineStyle: {
                    color: "#999",
                },
            },
            splitLine: {
                lineStyle: {
                    color: "#999",
                },
            },
        },
        yAxis: {
            name: "mm",
            type: "value",

            axisLabel: {
                textStyle: {
                    color: "#999",
                    fontSize: 14,
                },
            },
            axisLine: {
                lineStyle: {
                    color: "#999",
                },
            },
            splitLine: {
                lineStyle: {
                    color: "#999",
                },
            },
        },
        series: {
            name: "雨量",
            type: "bar",
            areaStyle: {},
        },
    };

    option && myChart.setOption(option);
    window.addEventListener("resize", function () {
        myChart.resize();
    });
}

Echarts 百度地图 + 时间轴

注:这个实现有些技术难度,很多小伙伴问我要如何实现,参考我的另一篇专题:地图可视化:基于 Echarts + 百度地图bmap + 时间轴timeline + 多边形(multi)polygon + 点scatter 的可视化案例_YYDataV数据可视化的博客-CSDN博客_echarts在地图上绘制多边形

 

四、更多案例

YYDatav的数据可视化《精彩案例汇总》_YYDataV的博客-CSDN博客❤️数据可视化❤️:基于 Echarts + Vue 实现的大屏范例【14】_小魔怪的博客-CSDN博客_echarts数据可视化❤️数据可视化❤️:基于 Echarts + Python 实现的大屏范例【13】国庆黄金周旅游监测㙍㙍㙍来了~_小魔怪的博客-CSDN博客❤️数据可视化❤️:基于 Echarts + Python 实现的大屏范例【12】(你想要的酷炫世界地图在这里了!)_小魔怪的博客-CSDN博客数据可视化:基于 Echarts + Python 实现的动态实时大屏范例【十一】https://yydatav.blog.csdn.net/article/details/120705616本次分享结束,欢迎多多交流 微信 6550523,商务合作请私聊。

相关文章:

  • RS笔记:深度推荐模型之SIM(基于搜索的超长行为序列上的用户长期兴趣建模)[CIKM 2020, 阿里妈妈广告团队]
  • 关于第一次接入Kotlin
  • C++中菱形类关系再理解
  • stack和queue的使用和模拟实现
  • 【C++】 string类常用接口的实现
  • 华为防火墙基础自学系列 | 汇总
  • TNet 中 JoinChannel 场景名可写可不写
  • 使用容器编译Yocto镜像
  • 【uniapp】小程序中修改Vant组件navbar左箭头的颜色及图标
  • 【区块链 | 智能合约】如何编写一个可升级的智能合约
  • java毕业设计开题报告javaweb户籍管理系统|户口
  • 交换机堆叠+链路聚合+浮动静态路由
  • (分布式缓存)Redis持久化
  • 计算机组成原理第二章----数据信息的表示 详解版(写的这么接地气我一下就懂了?)
  • windows 常用命令字典
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular 4.x 动态创建组件
  • Create React App 使用
  • js学习笔记
  • leetcode-27. Remove Element
  • PHP那些事儿
  • Spring Boot快速入门(一):Hello Spring Boot
  • 大快搜索数据爬虫技术实例安装教学篇
  • 工作中总结前端开发流程--vue项目
  • 基于webpack 的 vue 多页架构
  • 前端_面试
  • 找一份好的前端工作,起点很重要
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (03)光刻——半导体电路的绘制
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • .NET Remoting学习笔记(三)信道
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET企业级应用架构设计系列之结尾篇
  • .NET学习教程二——.net基础定义+VS常用设置
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • ::前边啥也没有
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @private @protected @public
  • [20190416]完善shared latch测试脚本2.txt
  • [AIGC] Java 和 Kotlin 的区别
  • [BT]BUUCTF刷题第4天(3.22)
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++]C++入门--引用
  • [Codeforces] number theory (R1600) Part.11
  • [Excel] vlookup函数
  • [IE9] IE9 RC版下载链接
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句