大数据项目7:基于大数据的天气数据分析和可视化系统

  1. 项目简介

本项目主要研究的内容是基于大数据分析和挖掘的技术,结合海量的天气数据,对异常灾害数据进行分析和预测,发现异常气象中的规律。当下大数据的技术正在高速发展,并且在教育,金融,农业,交通,安防等很多行业已经落地应用,并且取得了不错的效果,证明了大数据分析技术可行性和价值。此课题主要研究的内容分为分为以下几个方法,项目的调研分析,系统的设计和技术选型,系统的搭建和实施,数据爬去程序的设计和实现,数据仓库的设计以及数据分析和可视化等模块。主要利用python相关的爬虫技术,大数据相关的ETL,分析和存储技术以及Web相关的前后技术如python爬虫requests库,Hadoop,Spark,Mysql,MyBaties,FlumeBoot,可视化技术等等,此项目的研究意义是为了更好预测自然灾害发生的可能性,最大程度的降低人民的生命和财产损失.最终是通过数据分析和统计得到的预期指标结果,如不同地区,不同时段,不同季节发生灾害的频率,发生灾害的区域,发生灾害的类型,自然灾害造成的损失灾害等级分析,灾害基本信息展示等等,最后利用可视化的技术vue结合echarts的技术对分析的结果进行可视化的大屏展示。

  1. 效果截图

  2. 登录效果截图

分析效果图

代码目录图

资料目录图

  1. 系统需求概述

    1.       系统的业务流程

系统的业务流程是非常重要的一个环境。具体包含一下几个环节

  1. 数据集采集

数据的采集我们是使用python的技术,主要的过程包含一下几个步骤,首先是初始开始条件,然后设置初始的url,也就我们爬取数据的万只,然后使用requests的模拟client进行请求,然后提取到网页的信息,我们使用xpath工具针对html的页面内容就行抽取,然后对采集的数据进行解析存储。另一方面对下一下url进行拼接,拼接完成之后判断是否有效果,如果满足条件我们就回到抓取页面的步骤,然后在开始循环直到爬取步骤全部完成。这样的我们就拿到我们去拿不的信息数据,并且结果的存储到本地。

爬取数据流程图

  1. 数据的存储和分析

数据的存储先关的设计主要用到了大数据的组件Hadoop,分布式组件HDFS进行存储,为了数据的安全副本保持3份,主要存储的数据灾害明细数据,灾害字典数据,灾害计算规则表。另外为了便于和web端进行交互,还结果数据主要存储在mysql中,分为灾害等级占比分析的数据,在还数量和年份相关的数据,灾害发生的频率和地区相关数据等等。这样数据主要是便于后台的查询工作。

具体的业务流程如下图

分析存储业务流程图

灾害等级是整个系统非常核心的模块之一,它展示不同灾难发生的比例。其中涉及到到的计算规则是,首先从爬去到的灾难原始数据中,对数据进行去脏,然后分层建设数据仓库设计的表示,自然灾害等级表,然后根据灾难等级进行分组聚合然后求出不同级别的灾难数量。然后通过可视化系统最终展示出来的过程。

灾害等级分为大数据计算和可视化两部分组成。大数据计算是是整个灾难等级管理模块的灵魂所在,所以分布式计算分析十分重要。由于灾难类型分析收到数据量和实时性、数据的一致性、数据的完整性等各个因素的隐形,不同等级的灾难等级分别保存在不同的数据下。同时考虑到整系统的实用性,每一个等级表都要有一个相应的字典数据。并且字段表是独立的。

数据库是有使用权限的,只有拥有权限的管理员才可以向数据库中添加各种类型且符合要求的字典,也可以对它们进行修改和删除。所添加的等级数据可以通过等级来源来设计等级库,例如:可以设计管理员的灾难等级。这样设计可以就变得非常的灵活。这样方便了使用,缩减了使用的工作量和时间。

  1. 系统的功能性需求

系统的功能主要分为以下几个方面。用户登录,等级数量分析,时间段分析,地区维度分析和关系分析。

  1. 用户登录

下图是用的登录的时序图,首先用户在浏览器端发出请求,通过账号和密码的验证之后,就灯能访问服务器的资源,服务根据访问的字符以https协议和json格式的数据进行传输,然后返回给浏览器,浏览器进过渲染和样式调整之后就把结果显示了出来,用户也就看到了详细的内容。

  1. 等级数量的分析

我们爬去到的数据中有两个重要的字段,一个是灾难的等级,一个是灾难的类型,我们为了分析不同类型灾难的占比,计算的逻辑,首先对数据进行清洗转换,然后根据灾难的等级和类型进行分组,然后在聚合,这样可以得到不同等级不同类型的情况,为了计算占比,我们需要计算所有灾难总量,然后把总量作为各个类型的分母,然后再成语100%,这样的结果就是我们最终的的结果。最要设计的表有灾难等级字典表(disaster_level)和灾难等级结果表(part1)

分布式计算原理图

  1. 系统的非功能性需求分析

    1.   需求分析

非功能性的需要主要是分析系统的定位,用户群体,性能需求和可靠性,可用性等。

本系统的定位是针对异常灾害天气的分析,可以服务于自然灾害监测部门,例如气象局,经过海量数据的分析,可以给他们提供有力的数据支撑,另外这样分析的结果直接或间接传递到群众中,收益为每个人。

性能方面因为使用的分析是比较成熟且稳定的Spark技术,只要是资源允许的情况下,稳定可靠的长期运行时没有问题,并且因为主要的计算还是在内存中,所以速度这方面也是有保障的。另外web系统采用ssm的框架进行搭建。是一个高内聚,低耦合的系统。

因为是精简的web系统,登录之后就可以看到可视化的分析结果,使用起来简单方便,并且使用用大多人员,使用门槛很低。因此普适性好。

  1.   设计方案

根据上述的需求分析,下面设计具体方案。

从年份的维度对灾害数量进行分析,这也是分析最重要的原因之一,以年份为单位能够全局的总览历年来的气象,这样我们可以分析出全局的内容,避免局部的结果出现,并且发现其中规律之后,可以在下面的10年终对灾害进行预测及时发现问题,这样才能对自然灾害进行预测。

设计方案图

二者之间的关系分析分析主要分为数据存储和可视化分析两大部分组成。用到了数据采集和ETL相关技术,另外需要用到可视化的技术。大数据计算是是关系分析的核心所在,所以分布式计算分析十分重要。同样的数据库是有使用权限的,只有拥有权限的管理员才可以向数据库中添加各种类型且符合要求的字典,也可以对它们进行修改和删除。所添加的等级数据可以通过等级来源来设计等级库,例如:可以设计管理员的灾难等级。这样设计可以就变得非常的灵活。这样方便了使用,缩减了使用的工作量和时间。

数据分析主要利用python的类库requests,通过调用爬虫APi 从气象科学专业知识服务系统上怕爬下格式xml格式的数据,然后调用json和csv的模块对爬去下来的数据进行解析,并以csv格式存储到本地系统。数据清洗是利用Spark-Core的技术从CSV文件中读出原始数据,然后通过空值判断,去重,正则检验以及格式转换等对数据进行处理和转出,最后处理成标准的结构数据。

数据库设计:根据分析的主题和指标,对需要的数据进行分库分表,建立ER关系图,清晰展示表之间的关联关系,数据库进行分层搭建结合维度模型设计。数据分析计算模块:主要是利用SparkCore 和SparkSql的技术,然后根据业务主题进行分析计算,最后得到结果数据,然后把结果数据存储在关系型数据中,便于下一步分可视化展示

可视化模块:此模块设计的网站平台的前后端设计,其中主要是利用学过的Vue,Threamleaf,js,css,echarts,html等,主要的功能是以图表的形式展示结果,更加的清晰明了。后端的技术主要是SpringBoot,Mybaties,SQL等等技术,主要是和数据可进行交互,实现数据的增删改查的功能

通过分析主要分析的指标是:灾害等级分析,灾害次数分析,灾害基本信息,各个地区发生灾害的次数,灾害时段分析,灾害季节分析等

项目源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967879.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyQt学习记录01——加法计算器

0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序,然后新建一个目录用于学习,其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力,请改为国内源 pip install pyqt5 -i https://pypi.douban.com/simple然后安装pyqt相关…

pytest测试专题 - 1.2 如何获得美观的测试报告

<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细&#xff0c;用例在执行调试时还算比较方便阅读和提取失败信息&#xff0c; 但对于大量测试用例运行时&#xff0c;可能会存在以下不足 报文被冲掉测试日志没法归档 …

嵌入式八股文面试题(二)C语言算法

相关概念请查看文章&#xff1a;C语言概念。 1. 如何实现一个简单的内存池&#xff1f; 简单实现&#xff1a; #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…

树莓派上 基于Opencv 实现人脸检测与人脸识别

一&#xff0c;需求 基于树莓派4b&#xff0c;usb1080p摄像头&#xff0c;实现人脸检测与人脸识别。尝试了海陵科的模组和百度的sdk。海陵科的模组无法录入人脸&#xff0c;浪费了100多块钱。百度的sdk 在树莓派上也无法录入人脸&#xff0c;官方解决不了。最后只能用opencv自…

机器学习10-卷积和卷积核3

机器学习10-卷积和卷积核3 纹理表示卷积神经网络全链接神经网络的瓶颈卷积网络中的卷积操作特征响应图组尺寸计算 池化操作示例 图像增强翻转随机缩放抠图色彩抖动其他方案1. 平移2. 旋转3. 拉伸4. 径向畸变5. 裁剪 纹理表示 如何去表示纹理&#xff1f; 基于卷积核组的纹理表…

Ollama部署DeepSeek(windows or ubuntu)

Ollama(官网是https://ollama.com/)是一个专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计的开源框架。它简化了大型语言模型的部署过程&#xff0c;提供了轻量级与可扩展的架构&#xff0c;使得研究人员、开发人员和爱好者能够更加方便地在本地…

嵌入式知识点总结 操作系统 专题提升(五)-内存

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.在1G内存的计算机能否malloc&#xff08;1.2G&#xff09;&#xff1f;为什么&#xff1f; 2.malloc能申请多大的空间&#xff1f; 3.内存管理有哪几种方式&#xff1f; 4.什…

Lucene 中的并发错误:如何修复乐观并发失败

作者&#xff1a;来着 Elastic Benjamin Trent 及 Ao Li 感谢 CMU PASTA 实验室开发的确定性并发测试框架 Fray&#xff0c;我们找到了一个棘手的 Lucene 漏洞并将其修复。 是的&#xff0c;另一个修复错误博客。但这个故事有一个转折&#xff0c;一位开源英雄突然出现并拯救了…

redis 缓存击穿问题与解决方案

前言1. 什么是缓存击穿?2. 如何解决缓存击穿?怎么做?方案1: 定时刷新方案2: 自动续期方案3: 定时续期 如何选? 前言 当我们使用redis做缓存的时候,查询流程一般是先查询redis,如果redis未命中,再查询MySQL,将MySQL查询的数据同步到redis(回源),最后返回数据 流程图 为什…

【分布式理论9】分布式协同:分布式系统进程互斥与互斥算法

文章目录 一、互斥问题及分布式系统的特性二、分布式互斥算法1. 集中互斥算法调用流程优缺点 2. 基于许可的互斥算法&#xff08;Lamport 算法&#xff09;调用流程优缺点 3. 令牌环互斥算法调用流程优缺点 三、三种算法对比 在分布式系统中&#xff0c;多个应用服务可能会同时…

【车载项目】 systemui下拉负一屏界面,通过语音输入:“中文模式/英文模式“,会闪现一下负一屏下层的画面

1、背景 【操作步骤】负一屏界面&#xff0c;语音输入&#xff1a;“中文模式/英文模式” 【预期结果】显示正常 【实际结果】 会闪现一下负一屏下层的文字 【发生概率】必现 systemui下拉负一屏界面&#xff0c;通过语音输入&#xff1a;“中文模式/英文模式”&#xff0c;会…

CSS 渐变效果详解——线性渐变与径向渐变

在现代前端开发中&#xff0c;CSS 渐变被广泛应用于网页背景、按钮、图形等元素的渲染。相较于使用图片&#xff0c;实现渐变可以减少资源请求&#xff0c;同时也更灵活。今天我们主要介绍两种常用的渐变类型&#xff1a;线性渐变&#xff08;Linear Gradient&#xff09;与径向…

【愚公系列】《Python网络爬虫从入门到精通》001-初识网络爬虫

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

如何借鉴GitHub开源项目进行LabVIEW开发

在设备开发过程中&#xff0c;许多开发者选择借鉴GitHub等平台上的开源项目&#xff0c;特别是当目标程序没有LabVIEW版本时。比如&#xff0c;在本例中&#xff0c;我们看到一个开源的Micro-Manager项目&#xff0c;它主要使用Java、C、Python等编程语言。对于LabVIEW开发者来…

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡 背景 前端开发接口请求&#xff0c;调试&#xff0c;联调&#xff0c;接入数据&#xff0c;前端必不可少工具&#xff0c;postman是一个非常好…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程&#xff0c;css3中的属性进展都不一样&#xff0c;浏览器厂商在标准尚未明确的情况下提前支持会有风险&#xff0c;浏览器厂商对新属性的支持情况也不同&#xff0c;所有会加厂商前缀加以区分。如果某个属性…

Docker Compose介绍及安装使用MongoDB数据库详解

在现代容器化应用部署中&#xff0c;Docker Compose是一种非常实用的工具&#xff0c;它允许我们通过一个docker-compose.yml文件来定义和运行多容器应用程序。然而&#xff0c;除了Docker之外&#xff0c;Podman也提供了类似的工具——Podman Compose&#xff0c;它允许我们在…

防火墙是什么?详解网络安全的关键守护者

当今信息化时代&#xff0c;企业和个人在享受数字生活带来的便利时&#xff0c;也不可避免地面对各种潜在的风险。防火墙作为网络安全体系中的核心组件&#xff0c;就像一道牢不可破的防线&#xff0c;保护着我们的数据和隐私不受外界威胁的侵害。那么防火墙是什么&#xff1f;…

畅游Diffusion数字人(16):由音乐驱动跳舞视频生成

畅游Diffusion数字人(0):专栏文章导航 前言:从Pose到跳舞视频生成的工作非常多,但是还没有直接从音乐驱动生成的工作。最近字节跳动提出了MuseDance,无需复杂的动作引导输入(如姿势或深度序列),从而使不同专业水平的用户都能轻松进行灵活且富有创意的视频生成。 目录 贡…

机器学习常用包matplotlib篇(一)简单图像绘制

前言 Matplotlib 是支持 Python 语言的开源绘图库&#xff0c;简单且完善。 一、环境配置 1.环境设置 在 Notebook 环境绘图时&#xff0c;需先运行 %matplotlib inline 命令&#xff0c;将绘制图形嵌入当前页面。在桌面环境绘图&#xff0c;无需上述命令&#xff0c;而是在…