基于hadoop的天气分析可视化系统的设计和实现

摘要: 基于hadoop的天气分析可视化系统是一种利用先进的技术手段和庞大的数据资源,对全球范围内的天气情况进行深入研究和分析,并将结果以直观、易懂的方式呈现给用户的系统。通过该系统,我们可以实时获取各地区的温度、湿度、风速等多个指标,并结合历史数据和趋势预测模型,为用户提供准确可靠的天气信息。 这个系统不仅能够满足普通人们对天气预报需求,还可以广泛应用于各行业领域。例如,在农业生产中,农民可以根据该系统提供的精准天气预报来合理安排作物种植时间和灌溉计划;在城市规划中,政府部门可以借助该系统来评估建筑物抗风能力及防汛措施是否符合要求;在旅游行业中,旅行社可以根据该系统提供的景区天气情况来调整旅游线路安排。 此外,基于hadoop技术开发出来的天气分析可视化系统还具备高度自动化和智能化特点。它能够自动收集并处理海量实时数据,并通过强大算法进行快速分析与挖掘。同时,在用户界面设计上也注重简洁明了、操作便捷性。无论是专业人士还是普通用户都能轻松使用这个功能强大且易上手的工具。

总之,“基于hadoop的天气分析可视化系统”不仅为我们带来了更加精准、全面、方便快捷地获取天气信息与预测未来变化趋势等服务,而且也推动了科学研究与社会发展相结合,在多个领域起到积极促进作用。

本文设计了基于hadoop的天气分析可视化系统后台分析可视化系统,本系统的核心功能是通过爬取贵州海量天气数据的原始数据,并通过hadoop技术将原始数据存储、计算,并将分析的结果以可视化列表形式展示。

关键词:天气数据;Flask; hadoop;可视化

Design and implementation of weather analysis visualization system based on hadoop

Abstract: The Hadoop-based weather analysis visualization system is a system that makes use of advanced technical means and huge data resources to conduct in-depth research and analysis of global weather conditions, and presents the results to users in an intuitive and understandable way. Through this system, we can obtain multiple indicators such as temperature, humidity and wind speed in various regions in real time, and combine historical data and trend prediction models to provide users with accurate and reliable weather information. This system can not only meet the needs of ordinary people for weather forecasting, but also be widely used in various industries. In agriculture, for example, farmers can use the precise weather forecast provided by the system to schedule crop planting and irrigation plans. In urban planning, government departments can use the system to assess the wind resistance of buildings and flood control measures to meet the requirements; In the tourism industry, travel agencies can adjust travel route arrangements according to the weather conditions of scenic spots provided by the system. In addition, the weather analysis visualization system developed based on hadoop technology also has the characteristics of high automation and intelligence. It can automatically collect and process massive real-time data, and quickly analyze and mine it through powerful algorithms. At the same time, in the user interface design also pay attention to concise, easy to operate. Both professionals and casual users can easily use this powerful and easy-to-use tool.

In short, the "Hadoop-based weather analysis visualization system" not only brings us more accurate, comprehensive, convenient and fast access to weather information and forecast future trends and other services, but also promotes the combination of scientific research and social development, and plays a positive role in many fields.

This paper designs a background analysis visualization system for weather analysis based on hadoop. The core function of this system is to extract the original data of massive weather data in Guizhou, store and calculate the original data through hadoop technology, and display the analysis results in the form of a visual list.

Key words: weather data; Flask; hadoop; visualization

第1章 绪论

1.1课题背景及意义

在社会的发展过程中,天气对于人们的影响越来越大。不仅影响着人们的出行,还影响着农业,畜牧业,自然灾害等多个领域息息相关。灾害性天气阻碍工农业发展,破坏交通设施,威胁人民生命财产的安全,严重影响社会稳定。随着气候观测手段的不断丰富,社会发展和防灾减灾工作对气候数据分析的范围和精度要求也越来越高。在当前阶段,气候分析面临两大问题:一是数据量大,传统的分析平台已经无法满足要求了;二是它的数据结构比较丰富,非结构化的数据的科学数据和传感器数据的传统的关系型数据库已经无法处理了,所以为了解决气候问题本设计采用大数据的相关技术对气候数据进行分析。随着全球气候变化的加剧,气候大数据分析成为了一个热门的研究领域。国内外的研究者们利用大数据技术,对气候变化的趋势、影响因素、预测等方面进行了深入的研究。所以研究该方向也有很大的意义。

    本文主要基于Hadoop的天气数据分析可视化系统,对华南地区的天气数据进行分析,得出年、月、日、周和季度的最高气温,最低气温、平均气温、最大风速、最低风速、平均风速、最大降水量、最低降水量和平均降水量。实现气候数据采集分析,最后使用Hdfs高吞吐量的特性可以帮助数据快速进入到数据库之中作为实时存储,将所需要的在一段时间内所需要的气候数据展现出来并进行分析。通过使用该系统可以帮助人们,地区和相关部门进行气候决策分析。

总而言之,从上述问题可以看出目前互联网天气数据平台信息缺乏整合,用户在冗杂的天气数据中难以筛选出有效的信息。本论文拟初步研究开发出一套完整的基于大数据平台的天气信息分析系统,本系统主要用于对天气数据和相关信息进行采集,通过hadoop平台对数据进行存储和计算,将指标分析给用户查询。这样,用户在使用本平台时只需一次注册操作,即可浏览各平台发布的天气数据,并且可以根据用户的条件进行筛选,可极大的提高查询天气效率。

1.2国内外研究现状

1.2.1外研究现状

目前,国内有许多专门从事研究与开发数据整合及分析平台的软件国家,凭借数据仓库、数据挖掘等方面雄厚的技术实力和丰富的实施经验为各行业客户比如电信、金融、政府机关及地区等,提供基于各种平台的数据整合及分析解决方案。“在我国,数据仓库在银行、保险业及证券业等领域已有成功案例。数据仓库技术的出现使得操作型环境分析型环境进行了分离,从而由以单一数据库为中心的数据环境发展为以数据库为中心的一种新的体系化环境,侧重于决策支持。数据仓库以改进后的数据库技术作为整合数据和管理资源的基本手段,以统计分析技术作为分析数据和提取信息的有效方法,通过OLAP技术及数据挖掘技术来多维度多层次地展现数据以及发现数据背后隐藏的规律,有效地利用数据,实现了从数据到信息再到知识的过程,为行业提供不同层次的决策支持。

对天气的监测既要考虑内部环流的模型,也要探测环流周围的变化,从中发现相应的联系,这就需要各种监测技术和方法的配合。为了实现上述监测,利用自动气象监测站,通过综合监测试验,表明中尺度监测事实,掌握空间尺度十几公里的天气系统的三维结构,以及强对流云团微物理过程等。目前世界上比较先进的临近天气数据分析系统是美国国家强风暴实验室的预报决策支持系统,主要功能是能够对回波单体进行跟踪和测量,在每10min或5min一次雷达监测的基础上,对每个回波进行编号,根据其移动和发展历史外推其未来的位置和发展趋势,并以表格形式显示各单体的环流类型、产生冰雹的概率等信息,并不断修正过去的预报,及时发现天气的新变化,配合警报发布相关预警信息,国外发展利用雷达和卫星资料相结合的临近预报技术,主要是以降水预报为重点,这种方法的基础是应用天气数据分析系统的大量经验,发展基于线性外推技术或者线性外推与精细化数值预报模式相结合的短时临近预报技术,同时利用在不确定性理论基础上的短期中尺度集合预报技术,可以给出这些天气过程概率意义上的最大可能性预报。

1.3研究的主要内容

本课题主要是解决在天气分析中的各种问题,主要实现销售管理、采购管理、天气管理、天气管理和基本信息管理等。

第1章:首先描述了背景和意义,再从时间线一步步发展,分国内外讲述天气分析系统现状。

第2章:是对天气分析系统中不同角色进行需求分析,并且描述该系统开发所需要用的技术知识和环境要求,以及从不同方面(经济可行性、技术可行性和操作可行性)对照系统进行分析。

第3章:系统总体框架构成和实体图、E-R图。

第4章:从不同模块进行具体分析,进行数据库表设计,列举出该系统的难点和创新点分析。

第5章:根据模块进行具体实现和测试,展示了系统效果图和使用说明。

第6章:是自己做完整个系统的一些总结和感受,以及分析整个系统的不足和优化方式。


第2章 系统需求分析与可行性设计

2.1功能需求分析

天气分析系统中主要有两类用户:管理员、普通人员。每一类用户都有自己的权限,不同用户登陆系统后显示的菜单栏是不同的,显示每一类用户所对应的模块。

2.1.1系统管理员用例

管理员用例主要包括登录、基本信息管理、天气数据管理、天气数据分析等模块,如图2.1所示。

表2-1 管理员登陆

描述

描述

用户输入用户名和密码之后,系统判断是管理员角色,登录天气分析系统

基本流程

  1. 管理员进入管理员登陆页面
  2. 输入管理员用户名和密码之后,点击登陆按钮
  3. 系统验证管理员信息正确性
  4. 验证成功后,系统切换至管理员主页面

返回数据

管理员登陆结果集

表2-2基本信息管理

描述

描述

登录成功,进入系统的基本信息管理界面,可以对基本信息管理进行操作

基本流程

  1. 管理员登录成功进入系统
  2. 进入基本信息管理界面
  3. 对基本信息管理进行操作
  4. 确认是否进行操作
  5. 操作成功提示
  6. 显示操作之后的信息

返回数据

基本信息结果集

表2-3 天气数据管理

描述

描述

管理员可以进入天气管理界面,可以对天气信息管理进行操作

基本流程

  1. 管理员登录成功进入系统
  2. 进入天气管理界面
  3. 对天气信息管理进行操作
  4. 确认是否进行操作
  5. 操作成功提示
  6. 显示操作之后的信息

返回数据

天气结果集

表2-4 天气数据分析

描述

描述

管理员可以进入天气分析界面,可以对天气分析进行操作

基本流程

  1. 管理员登录成功进入系统
  2. 进入天气分析界面
  3. 对天气分析进行操作
  4. 确认是否进行操作
  5. 操作成功提示
  6. 显示操作之后的信息

返回数据

天气分析结果集

2.2 所需技术分析

2.2.1  Flask

Flask是一个开放源代码Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯网络IP 集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Flask Reinhardt来命名的。2019年12月2日,Flask 3. 0发布 。

Flask是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Flask具有较强的可扩展性。Flask 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。其工作流程主要可划分为以下几步:

1.用manage .py runserver 启动Flask服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Flask哪个Python模块应该用作本站的URLConf,默认的是urls .py。

2.当访问url的时候,Flask会根据ROOT_URLCONF的设置来装载URLConf。

3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)。

4.最后该view函数负责返回一个HttpResponse对象

2.2.2 爬虫技术

Scrapy是目前较为成熟的爬虫技术框架,一般采用Python语言开发程序,Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

在本设计中,由于需要使用到天气网站的原始数据,因此需要开发相应的网络爬虫程序完成对原始数据的采集,图2-1为爬取网站的天气数据的原理流程图。

图2-1 天气爬虫原理流程图

2.2.4 Hadoop

Hadoop 是一个提供分布式存储和计算的开源软件框架,它具有无共享、高可用(HA)、弹性可扩展的特点,非常适合处理海量数量。

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架,MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完的分布式运算程序,并发运行在一个Hadoop集群上。

优点:

(1)MapReduce易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。

(2)良好的扩展性

当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。

(3)高容错性

MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。

(4)适合PB级以上海量数据的离线处理可以实现上千台服务器集群并发工作,提供数据处理能力。

2.2.4 MySQL

MySQL是关系型数据库管理系统(RDBMS),是RDBMS中最流行的一种,且许多操作系统上都能运行 MySQL。安装容易,运营成本低,便于维护。与其他大型数据库相比,对初学者更加友好,容易学习。与此同时,MySQL也是网络应用的最佳RDBMS之一[14]。

2.3系统可行性

在深入了解一个地区的运行状况和管理方式之后,为了更好的对地区运作进行分析。从经济可行性、技术可行性和操作可行性三个角度对天气分析系统进行了探讨。

2.3.1经济可行性分析

天气分析系统主要目的是为了使国家能够很好地管理天气变化,确保天气信息公开最大化,降低国家管理成本,及时知晓国家的天气状况。

2.3.2技术可行性分析

本系统应用的开发使用了MySQL作为天气分析系统相关数据的存储中心。采用的语言是稳定的Python语言,整体开发架构是:后端使用的是:Flask框架,Flask目前被许多大国家使用,是一个可靠的技术框架,前端使用的echarts组件等,操作流畅、运行速度快。因此,该系统在技术上是足够可行的。

2.3.3操作可行性分析

  1. 此系统的界面设计简洁明了、美观大方,各个组件操作起来比较流畅,对操作人员来说,页面的提示通俗易懂。
  2. 此系统,对有计算机经验或者经过简单培训的操作人员来说,易于使用。
  3. 对于操作人员十分友好,只需查看操作手册或者程序说明便可灵活使用,同时,也能满足不同操作人员的需求。


第3章 系统功能总体设计

3.1天气数据爬虫设计

这个项目我们的主要目的是爬取中国海洋网的天气数据信息,包括天气

位、地区名称和地区描述和规模等具体详情信息,下面描述本文爬虫工程主要设

计步骤。

(1)创建项目

打开一个终端输入:scrapy startproiect python_ zgc _data,Scrapy框架将会在指定目录下生成整个工程框架。系统生成的目录如下图3-2所示:

图3-2爬虫框架目录结构

(2)修改setting文件

如图3-1所示为修改后的setting文件主要内容,本设计主要修改三项内容,

第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页

面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求

头,添加一个User-Agent。

表3-1 爬虫setting文件主要配置

BOT_NAME = 'python_city_data'

SPIDER_MODULES = ['python_city_data.spiders']
NEWSPIDER_MODULE = 'python_city_data.spiders'
# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'python_city_data (+http://www.yourdomain.com)'
#换伪造请求头
USER_AGENT = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
# Obey robots.txt rules
ROBOTSTXT_OBEY = False

(3)确认要提取的数据,item 项

item定义你要提取的内容(定义数据结构),比如我提取的内容为天气数据的所在城市和地区天气详情,于是需要在items类中新建对应的实体类,并需要设置相应的字段取出对应的数据。Field 方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。

  1. 开发爬虫程序,访问下载网页,使用Xpath语法提取内容

3.2 大数据环境搭建

(1)在master服务器上确定存在hadoop安装目录

[root@master ~]# ls  /usr/cstor/hadoop

(2)设置JDK安装目录

编辑文件“/usr/cstor/hadoop/etc/hadoop/hadoop-env.sh”,找到如下一行:

export JAVA_HOME=${JAVA_HOME}

将这行内容修改为:

export JAVA_HOME=/usr/local/jdk1.7.0_79/

(3) 指定HDFS主节点

编辑文件“/usr/cstor/hadoop/etc/hadoop/core-site.xml”,将如下内容嵌入此文件里最后两行的<configuration></configuration>标签之间:

<property>

  <name>hadoop.tmp.dir</name>

  <value>/usr/cstor/hadoop/cloud</value>

</property>

<property>

  <name>fs.defaultFS</name>

  <value>hdfs://master:8020</value>

</property>

(4) 在master服务器上格式化主节点:

[root@master ~]# hdfs  namenode  -format

统一启动HDFS:

[root@master ~]#cd /usr/cstor/hadoop

[root@master hadoop]# sbin/start-dfs.sh

(5) 通过查看进程的方式验证HDFS启动成功

[root@master sbin]#  jps #jps查看java进程

若启动成功,会看到类似的如下信息:

6208 NameNode

6862 Jps

6462 SecondaryNameNode

图5-1  Hadoop启动成功效果图

3.3 天气分析程序设计

本文中如需分析目前天气网站上天气情况,首先需要定义一个任务中的核心逻辑,需要在代码中对每条天气数据的温度、风向,下面为分析任务的主要逻辑代码。

表3-2 温度分析代码

import requests

# 获取天气数据def get_weather_data(city):

    api_key = 'your_api_key'

    url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

    response = requests.get(url)

    data = response.json()

    return data

# 分析温度def analyze_temperature(weather_data):

    if 'main' in weather_data:

        main = weather_data['main']

        if 'temp' in main:

            temperature_kelvin = main['temp']

            temperature_celsius = temperature_kelvin - 273.15

            return temperature_celsius

    return None

# 主程序if __name__ == '__main__':

    city = 'Beijing'  # 输入你想要查询的城市

    weather_data = get_weather_data(city)

    

    if 'cod' in weather_data and weather_data['cod'] == 200:

        temperature = analyze_temperature(weather_data)

        if temperature is not None:

            print(f"The temperature in {city} is: {temperature:.2f} degrees Celsius")

        else:

            print("Temperature data not available.")

    else:print("Failed to retrieve weather data.")

首先定义了一个函数get_weather_data(city)用于获取指定城市的天气数据。然后定义了analyze_wind_direction(weather_data)函数来分析风向,根据风向角度划分风向范围。最后在主程序中调用这两个函数,获取天气数据并分析风向。下表3-4为天气风向分析代码的主要逻辑。

3-4 风向分析代码

import requests

# 获取天气数据def get_weather_data(city):

    api_key = 'your_api_key'

    url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

    response = requests.get(url)

    data = response.json()

    return data

# 分析风向def analyze_wind_direction(weather_data):

    if 'wind' in weather_data:

        wind = weather_data['wind']

        if 'deg' in wind:

            degree = wind['deg']

            direction = "North" if 0 <= degree < 45 or 315 <= degree <= 360 else \

                        "Northeast" if 45 <= degree < 135 else \

                        "East" if 135 <= degree < 225 else \

                        "Southeast" if 225 <= degree < 315 else "Unknown"

            return direction

    return "Unknown"

# 主程序if __name__ == '__main__':

    city = 'Beijing'  # 输入你想要查询的城市

    weather_data = get_weather_data(city)

    

    if 'cod' in weather_data and weather_data['cod'] == 200:

        wind_direction = analyze_wind_direction(weather_data)

        print(f"The wind direction in {city} is: {wind_direction}")

    else:

        print("Failed to retrieve weather data.")

下表3-5地图天气分析代码的主要逻辑。

3-5天气地图分析代码

import requestsimport matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemap

# 获取城市天气数据def get_city_weather_data(city):

    api_key = 'your_api_key'

    url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

    response = requests.get(url)

    data = response.json()

    return data

# 绘制中国地图

plt.figure(figsize=(10, 8))

m = Basemap(projection='merc', llcrnrlat=0, urcrnrlat=50, llcrnrlon=70, urcrnrlon=140, resolution='l')

m.drawcoastlines()

m.drawcountries()

m.drawmapboundary(fill_color='aqua')

m.fillcontinents(color='lightgreen', lake_color='aqua')

# 不同城市的经纬度信息

cities = {

    'Beijing': (39.9042, 116.4074),

    'Shanghai': (31.2304, 121.4737),

    'Guangzhou': (23.1291, 113.2644),

    # 可以根据需要添加更多城市

}

# 获取并显示不同城市的天气情况for city, (lat, lon) in cities.items():

    weather_data = get_city_weather_data(city)

    if 'main' in weather_data and 'temp' in weather_data['main']:

        temperature_kelvin = weather_data['main']['temp']

        temperature_celsius = temperature_kelvin - 273.15

        m.plot(lon, lat, marker='o', markersize=5*temperature_celsius, label=f'{city}: {temperature_celsius:.1f}°C', color='red')

plt.title('Weather Analysis in China')

plt.legend()

plt.show()

第4章 系统详细分析与设计

基于Flask天气分析可视化分析平台的基本业务功能是采用Flask框架实现的, 在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。

4.1 开发环境与配置

4.1.1 开发环境

本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装天气端软件,交互性更强。基于Flask天气分析可视化分析平台使用Pycharm集成开发工具。而系统运行配置时,选择应用本地来部署Web服务器来保障平台的正常运行。本系统的主要开发环境以及开发工具如表4-1所示。

表4-1 系统开发环境和工具

项目

系统环境及版本

硬件环境

Windows 64 位操作系统

Python

Python2.6

数据库

MySql

开发工具

Pycharm

项目架构

Flask

4.1.2 框架配置介绍 

本系统使用集成开发工具Pycharm进行开发,由于 Pycharm本地配置详细资料有很多,不做详细赘述。

图4-1 后台的配置文件

4.2 数据库的设计

数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。

根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、天气分析可视化等数据库表。

用户的属性包括用户编号、用户名、密码和性别、注册账号的时间。用户实体属性图如图4-2所示:

图4-2 用户实体属性图

根据以上分析,各个实体之间有一定的关系,使实体与实体可以联系起来,建立成整个系统的逻辑结构,本系统中,普通用户通过对天气分析可视化的管理,使天气分析可视化与用户实体存在对应关系。

4.3 系统功能模块实现

4.3.1登录认证

用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。具体流程如时序图如4-2所示。

图4-3登录界面图

图4-2登录认证流程图

4.3.2协议字段解析功能

天气数据管理功能是对天气数据进行查询,删除等操作的功能集合,天气数据管理功能使用到了天气数据表t_tianqi,天气数据表t_tianqi的主要数据字段,结构,类型及描述如下表4-2所示。

表4-2 天气数据表字段

字段名称

数据类型

是否允许为空

描述

id

int

不允许

自增主键,唯一ID

cityname

String

允许

所在地区名称

company

String

允许

最低温度

company_size

String

允许

最高温度

Fengxiang

String

允许

白天风向

experience

String

允许

夜晚风向

industry

String

允许

采集年份

recruiter

String

允许

风向等级

salary

String

允许

范围

天气分析可视化分析系统的天气分析可视化协议解析功能界面如下图所4-4所示:

图4-4 天气数据管理

天气分析可视化协议解析

功能流程功能图如图4-5所示:

图4-5 天气数据管理流程图

 通过“天气分析可视化分析”按钮,进入天气分析可视化分析界面,用户可以看到天气分析可视化列表,例如:天气分析可视化名称、所属类别、长度、天气分析可视化目的地、天气分析可视化源、天气分析可视化时间的详细信息。通过此界面,用户可以对天气分析可视化进行删除管理操作。

4.3.3天气分析功能

数据可视化模块就是对我们采集和计算的分析结果的展示。数据分析模块的

数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结

构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式

进行展示,从而形象直观地表达数据蕴含的信息和规律。

图4-6 温度分析可视化分析界面

天气分析可视化hadoop分析可视化开发的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂天气分析可视化数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,避免为展示而展示;配色一般以深色调为主,注重整体背景和单个视觉元素背景的一致性。本文使用Echarts中地图、线条等组件,将分析结果较为直观的展示给平台用户,使得用户能够简便的获取有效的信息。

图4-7 地图分析可视化分析界面

图4-8 天气分析分析界面

图4-9 风向分析分析界面

4.4 本章小结

本章主要分析了基于Flask的天气分析可视化分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了基于Flask框架的天气分析可视化分析系统的搭建环境和开发步骤,包括程序中的一些数据库配置等。前端页面采用的是html实现。


第5章 系统功能实现与运行测试

5.1后台登录页面

5.1.1功能概要

该功能是用于用户登陆天气分析系统,当用户输入用户名和密码之后,经过数据校验,成功则进入主页面。

5.1.2详细描述

该后台登录功能,通过向后台登录接口发送请求,如图5.1是后台登录界面。登陆成功,则提示登陆成功,并跳转到天气管理信息界面,如图5.2所示。

图 5. 1 后台登录页面截图

图 5. 2 登录成功页面

5.2信息管理

5.2.1天气信息管理

天气信息管理功能:实现天气信息的相关操作。如图5.3是天气管理详情界面,进入天气管理界面,加载完毕则显示所有的天气信息。

添加天气信息:进行添加操作后,会弹出一个dialog让用户输入天气信息。表单带*号的需要验证输入合法性,如图5.4所示。

图 5. 3 天气信息管理

5.2.2 天气数据可视化看板功能

数据分类预测模块就是对我们采集和计算的分析结果的展示。数据分析模块的

数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结

构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式

进行展示,从而形象直观地表达数据蕴含的信息和规律。天气数据hadoop看板界面如图5-4所示。

图5-7天气hadoop分析平台界面


第6章 总结与展望

6.1 系统开发遇到的问题 

由于基于Python天气数据分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括hadoop技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。

6.2展望

由于时间有限,天气分析系统在满足基本功能的同时,也存在着一些不足。如功能和安全性不够完善,页面的布局与市场上的一些信息管理系统还是有很大的差距等。因此,在系统需求分析与系统设计初期,必须进行更多的研究,对气象局的具体经营状况进行更深入的探讨。这样,才能开发出一个真正能满足地区业务需求的天气分析系统。存在的不足和后续需要改进的地方如下几个方面:

1)确保数据真实性和美化界面,在整个系统 UI 界面的样式和配色应该进行更详细的设计的美化,改善用户体验。

2)在登陆时采用更安全的加密方法,确保系统的安全。

当我的毕业论文接近尾声时,我意识到我很快就会进入社会。这次经历让我体会到如何自己发现和解决问题,以及会去思考更优解。在未来,我会朝自己选择的方向不断努力。

参考文献

[1]路平平,霍达,范天红等.2021年8月牡丹江一次暴雨天气成因分析[J].黑龙江气象,2022,39(01):12-15.

[2]徐文嘉,胡文东,丁禹钦,贾净翔,杨文达等.成都地区一次极值大暴雨天气过程成因初步分析[J].成都信息工程大学学报,2022,37(03):344-350.

[3]余丹,郭振煌.晋江机场雷暴天气统计分析[J].中国民航飞行学院学报,2022,33(06):64-66.

[4]冯景瑜,董鹤松,张昊,隋妍.一次延边地区大暴雪及冻雨天气过程物理量场特征分析[J].气象灾害防御,2022,29(04):35-39.

[5]陈阳权,杜安妮,丁旭,张茜.新疆区域航路天气要素分析及天气数据分析系统构建[J].气象水文海洋仪器,2022,39(02):93-95.

[6]吕雪芹,何艳丽,敖振浪.相控阵天气雷达站环境参数智能分析系统研发[J].计算机测量与控制,2021,29(12):246-251.

[7]苏茜,吴美芳,陈鲍发,孙华军.昌江流域9次致洪大暴雨的空间分布与天气系统分析[J].成都信息工程大学学报,2021,36(03):342-348.

[8]周嘉健,徐黄飞,邹庆彪,汤晶晶,刘艳中.基于SRTM地形数据天气雷达地形遮挡分析系统开发及应用[J].热带气象学报,2021,37(02):258-267.

[9]Accuweather Inc.; "Customizable Weather Analysis System for Providing Weather-Related Warnings" in Patent Application Approval Process (USPTO 20180107681)[J]. Politics & Government Week,2018.

[10]Patents; Patent Application Titled "Weather Analytics Systems and Methods" Published Online[J]. Computer Weekly News,2014

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要了解得物网站的数据结构和爬取方式,得物网站比较复杂,需要使用Selenium+BeautifulSoup进行爬取。 以下是一个简单的得物爬虫Python代码实现(注:仅供学习参考,请勿用于商业用途): ```python import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup options = Options() options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在报错的问题 options.add_argument('window-size=1920x3000') # 指定浏览器分辨率 options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面 options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 options.add_argument('--headless') # 无界面 driver = webdriver.Chrome(options=options) url = 'https://www.dewu.com/' driver.get(url) # 等待页面加载完成 time.sleep(3) # 模拟鼠标点击,展开商品列表 driver.find_element_by_xpath('//div[text()="全部商品"]').click() # 等待页面加载完成 time.sleep(3) # 获取页面源代码 html = driver.page_source # 解析页面 soup = BeautifulSoup(html, 'html.parser') # 获取商品列表 items = soup.find_all('div', {'class': 'item-card'}) for item in items: # 获取商品标题 title = item.find('div', {'class': 'title'}).text.strip() # 获取商品价格 price = item.find('div', {'class': 'price'}).text.strip() # 获取商品链接 link = item.find('a', {'class': 'item-link'})['href'] print(title, price, link) # 关闭浏览器 driver.quit() ``` 这里的代码仅仅是一个简单的爬虫示例,如果想要更加深入地了解得物网站的数据结构和爬取方式,需要结合具体的需求进行更加详细的分析实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值