摘要: 海洋气象数据在防灾减灾、应对气候变化、国民经济建设、科学研究、军事国防等方面都具有重要的作用,满足不同阶段、不同用户的功能需求,为海洋气象动态监管、气象预测、水文分析、环境保护、生态建设等应用场景提供数据基础和决策依据,扩展海洋气象水文数据使用场景,挖掘相关数据深层价值,提高技术投入产出效益等方面具有重要意义。
与此同时,可以收集全球海洋气候变化的相关信息,以便更好地理解全球气候变化的过程,以及海洋对全球气候变化的响应。海洋观测可以收集海洋表层温度、海洋深度温度、海水体积、海洋流速、海洋物质及能量的变化信息,以及海洋的潮汐、风、季节变化等信息,从而帮助人们更好地理解海洋对全球气候变化的响应,有助于预测未来气候变化的可能性,并制定有效的应对措施。
本文介绍了一个基于Hadoop的海洋气象数据分析可视化系统。该系统包括数据采集、数据清洗和转换、数据存储、数据分析和可视化展示等模块。
数据采集模块通过从海洋气象数据源中采集数据,并将数据存储在Hadoop分布式文件系统中,实现了大规模数据的收集和存储。同时,该模块还考虑了数据源的多样性和复杂性,能够适应不同类型和格式的数据源。
数据处理模块负责对数据进行清洗、转换和处理,以便后续的分析和可视化。通过使用Hadoop生态系统中的工具和技术,该模块能够高效地处理大规模数据,同时保证数据的质量和准确性。
数据存储模块使用Hive数据仓库,将处理后的数据存储在分布式数据库中,以便后续的分析和查询。该模块支持复杂查询和分析,可以满足不同用户的需求。
数据分析模块负责基于Hive数据仓库中的数据进行海洋气象分析,如风速、海温、风向等方面的统计分析和趋势分析。该模块支持多种分析方法和算法,能够生成全面和准确的分析结果。
可视化模块负责将数据分析结果以图表、地图等形式进行可视化展示,使用户能够直观地了解海洋气象数据的变化和趋势。该模块支持多种可视化方式和交互方式,能够满足不同用户的需求。
总之,该系统具有高效、准确、全面和可视化的特点,能够满足用户对海洋气象数据的分析和可视化需求。
关键词:大数据;Hive; Flask;海洋气象信息
Design and Implementation of a Hadoop based Visualization System for Marine Meteorological Data Analysis
Abstract: Marine meteorological data plays an important role in disaster prevention and reduction, climate change response, national economic construction, scientific research, military and national defense, etc. It meets the functional needs of different stages and users, provides data foundation and decision-making basis for dynamic supervision of marine meteorology, meteorological prediction, hydrological analysis, environmental protection, ecological construction and other application scenarios, and expands the usage scenarios of marine meteorological and hydrological data, Exploring the deep value of relevant data and improving the input-output efficiency of technology are of great significance.
At the same time, relevant information on global ocean climate change can be collected to better understand the process of global climate change and the response of the oceans to global climate change. Ocean observation can collect information on changes in ocean surface temperature, ocean depth temperature, seawater volume, ocean flow velocity, ocean material and energy, as well as information on ocean tides, winds, seasonal changes, etc., thereby helping people better understand the response of the ocean to global climate change, predicting the possibility of future climate change, and formulating effective response measures.
This article introduces a Hadoop based visualization system for ocean meteorological data analysis. The system includes modules such as data collection, data cleaning and conversion, data storage, data analysis, and visual display.
The data collection module collects data from marine meteorological data sources and stores the data in the Hadoop distributed file system, achieving large-scale data collection and storage. At the same time, this module also considers the diversity and complexity of data sources, which can adapt to different types and formats of data sources.
The data processing module is responsible for cleaning, transforming, and processing data for subsequent analysis and visualization. By using tools and technologies in the Hadoop ecosystem, this module can efficiently process large-scale data while ensuring the quality and accuracy of the data.
The data storage module uses a Hive data warehouse to store processed data in a distributed database for subsequent analysis and querying. This module supports complex queries and analysis, which can meet the needs of different users.
The data analysis module is responsible for conducting ocean meteorological analysis based on the data in the Hive data warehouse, such as statistical analysis and trend analysis of wind speed, sea surface temperature, wind direction, etc. This module supports multiple analysis methods and algorithms, and can generate comprehensive and accurate analysis results.
The visualization module is responsible for visualizing the data analysis results in the form of charts, maps, etc., enabling users to intuitively understand the changes and trends of marine meteorological data. This module supports multiple visualization and interaction methods, which can meet the needs of different users.
In summary, the system has the characteristics of efficiency, accuracy, comprehensiveness, and visualization, which can meet the analysis and visualization needs of users for marine meteorological data.
Keywords: big data; Hive; Flask; Marine meteorological information
1 绪论
1.1研究背景与现状
海洋气象数据在防灾减灾、应对气候变化、国民经济建设、科学研究、军事国防等方面都具有重要的作用,满足不同阶段、不同用户的功能需求,为海洋气象动态监管、气象预测、水文分析、环境保护、生态建设等应用场景提供数据基础和决策依据,扩展海洋气象水文数据使用场景,挖掘相关数据深层价值,提高技术投入产出效益等方面具有重要意义。
与此同时,可以收集全球海洋气候变化的相关信息,以便更好地理解全球气候变化的过程,以及海洋对全球气候变化的响应。海洋观测可以收集海洋表层温度、海洋深度温度、海水体积、海洋流速、海洋物质及能量的变化信息,以及海洋的潮汐、风、季节变化等信息,从而帮助人们更好地理解海洋对全球气候变化的响应,有助于预测未来气候变化的可能性,并制定有效的应对措施。
1.2国内外研究现状
1.2.1国内研究现状
随着大数据时代的到来,海洋气象数据可视化正在逐渐受到重视。目前,国内外对于海洋气象数据可视化的研究主要集中在以下几个方面:
数据可视化工具的研发。各个国家的气象机构、科研机构和企业都在研发海洋气象数据可视化工具,例如国内的浙江大学开发了一款名为“船舶自适应海洋气象预报系统”的数据可视化工具,能够根据用户需求动态生成气象预报图像等。
可视化技术的应用和完善。包括大数据可视化、虚拟现实、增强现实、人工智能等领域的技术正在被应用到海洋气象数据可视化中,以提高气象数据的可视化效果和用户交互体验。
数据分析与预测模型的集成。通过将数据分析与预测模型集成到海洋气象数据可视化工具中,能够较为准确地预测海洋气象变化的趋势和规律,以便用户更好地进行决策。
总的来说,由于海洋资料交汇机制以及种种客观因素,海洋数据整合效果欠佳,目前在海洋信息领域仍然存在大量“信息孤岛”,系统分散、数据独立是普遍现象,国内外对于海洋气象数据可视化的研究目前还处于发展阶段,未来将会有更多的技术应用到其中,以满足用户对于气象数据的需求。
1.2.2国外研究现状
基于Hadoop的海洋气象数据分析可视化系统在国外的研究现状相对较多。以下是一些相关的国外研究进展和应用案例:
美国国家海洋和大气管理局(NOAA):NOAA是美国的一个重要机构,致力于气象和海洋科学的研究。他们使用Hadoop技术来处理和分析大规模的海洋气象数据,并开发出了许多涉及可视化的数据分析平台和工具。
欧洲气象卫星组织(EUMETSAT):EUMETSAT负责欧洲地区的气象卫星观测任务,并拥有大量的气象数据资源。他们利用Hadoop和相关技术来处理和分析这些数据,并开发出了一些基于云计算和大数据技术的数据分析和可视化平台。
澳大利亚海洋数据中心(Australian Ocean Data Centre):该中心是澳大利亚海洋研究的一个重要机构,专门负责收集、管理和分发海洋数据。他们利用Hadoop和相关技术构建了一个海洋气象数据的分析和可视化系统,以支持科学研究和政策制定。
加拿大国家气象局(Environment and Climate Change Canada):该机构负责加拿大的气象和环境科学研究。他们使用Hadoop和其他大数据技术来处理和分析海洋气象数据,并开发出了一些用于数据可视化和预测的系统和工具。
这些国外研究机构和相关项目在海洋气象数据分析可视化方面取得了一些突破,并提供了一些有用的工具和平台。这些系统和工具可以帮助科学家、政府机构和其他利益相关者更好地理解和利用海洋气象数据。
1.3论文主要研究工作
基于Hadoop的海洋气象数据分析可视化系统的主要研究内容如下:
数据采集: 使用Python爬虫技术从海洋气象网站采集行为数据。通过编写爬虫程序,可以自动获取海洋气象数据并存储到Hadoop集群中。利用Hadoop的并行处理能力,可以加快数据采集和存储的速度,提高效率。
数据预处理: 使用Hive作为数据仓库,利用HiveQL进行海洋气象数据的处理、转换和存储。通过HiveQL语句,可以对海洋气象数据进行清洗、过滤、格式转换等操作,以适应后续的数据分析需求。同时,利用Hive的分布式计算能力,可以进行数据的查询和分析,提供更快的响应时间。
数据分析: 利用Hive进行海洋气象数据的统计分析和趋势分析。通过编写HiveQL查询语句,可以对风速、海温、风向等海洋气象数据进行聚合计算、排序、分组等操作,得到数据的统计特征和变化趋势。这些分析结果可以帮助用户了解海洋气象数据的变化规律,预测未来的气候情况。
数据可视化: 采用前端可视化开发框架Echarts,结合后端数据服务,实现海洋气象数据的可视化展示。通过Echarts提供的图表和地图组件,可以将海洋气象数据以直观、易懂的方式展示给用户。用户可以通过交互操作,自定义展示的时间范围、数据类型等,以便更全面地了解海洋气象数据的变化和趋势。同时,系统还可以支持数据的导出和分享,方便用户进行进一步的分析和应用。
综上所述,基于Hadoop的海洋气象数据分析可视化系统主要包括数据采集、数据预处理、数据分析和数据可视化四个功能模块。通过这些功能,用户可以方便地获取、处理、分析和展示海洋气象数据,从而更好地理解和利用海洋资源。
2 技术总述
2.1 基于Scrapy的网络爬虫技术
Scrapy是目前较为成熟的爬虫技术框架,一般采用Python语言开发程序,Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
在本设计中,由于需要使用到海洋气象网站的原始数据,因此需要开发相应的网络爬虫程序完成对海洋气象原始数据的采集,图2-1为爬取海洋气象网网站的海洋气象数据的原理流程图。
图2-1 海洋气象网网站爬虫原理流程图
2.2 Hive技术
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,主要解决海量数据的存储和海量数据的分析计算问题,广义上来说,HADOOP通常是指一个更广泛的概念,即HADOOP生态圈。
Hive是一个构建在Hadoop上的数据仓库框架。最初,Hive是由Facebook开发,后来移交由Apache软件基金会开发,并作为一个Apache开源项目。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端。
图2-2 Hive原理图
2.3 Flask技术
Flask是一个基于Python语言编写的轻量级Web应用框架,其核心理念是简单而灵活。Flask提供了基础的Web应用组件(如路由、请求和响应管理等),并可与其他第三方库集成,以实现更高级别的Web应用开发。
以下是Flask的主要特点:
轻量级和灵活性:Flask设计的目的是提供一种简单而灵活的方式来构建Web应用,因此它只提供了基础的Web应用组件,可以根据需求进行自定义扩展。
易学易用:Flask的API非常简洁易懂,上手难度较低,开发者可以很快地了解其基本使用方法,并开始进行Web应用的开发。
可扩展性:Flask可以集成许多第三方库,如SQLAlchemy、WTForms等,以实现更高级别的Web应用开发。
RESTful支持:Flask可以方便地实现RESTful API,使得开发者能够快速构建RESTful服务。
单元测试支持:Flask内置支持Python标准库unittest,使得开发者可以方便地进行单元测试。
Jinja2模板引擎:Flask默认使用Jinja2模板引擎,该模板引擎具有良好的模板继承和自定义过滤器等功能,可以快速构建出美观且高效的用户界面。
总体而言,Flask是一个轻量级、易学易用、可扩展性强的Web框架,适用于构建中小型Web应用。它的灵活性使得开发者可以根据需求进行自定义扩展,同时其集成了许多有用的第三方库,使得开发者可以快速地构建出有用的Web应用。
2.4 Echarts前端可视化技术
Apache ECharts 是一款基 于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts 开源来自百度商业前端数据可视化团队,基于htm15 Canvas, 它是一个纯Javascrint,图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。
2.5 本章小结
本章主要分析了系统开发过程中使用到的技术点和框架,通过研究这些技术的原理后,在本设计中加以应用,包括海洋气象信息采集的爬虫技术,数据持久化存储技术,Hive分析,以及基于Flask框架的系统后台技术,通过预研上述技术点并加以应用从而开发出基于大数据的海洋气象数据分析系统。
3 海洋气象信息大数据分析系统实现
3.1系统功能
通过前面的功能分析可以将基于大数据的海洋气象信息分析平台的研究与实现的功能主要包括用户登录、海洋气象信息管理、数据分析等内容。后台管理是针对已登录的用户看到满意的海洋气象数据分析而设计的。
3.2可行性研究
通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。
开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。
技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是Hadoop开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。
当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。
从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。
3.3 系统实现流程
基于Hadoop的海洋气象数据分析可视化系统,其实现流程大致可分为以下几个步骤:
数据采集:收集和获取海洋气象数据,包括气象站、卫星遥感、船只观测等多个来源。数据采集的方式可以通过手工录入或自动化采集等方式实现。
数据清洗与预处理:对采集到的原始数据进行清洗、去除异常值、重复值、缺失值等处理,使数据变得干净可用。同时,根据需求进行数据格式转换、统一标准化等预处理操作。
数据存储:将清洗和预处理后的数据存储到Hadoop分布式文件系统(HDFS)中,以便后续分布式计算和处理。数据通常以文件的形式存储在HDFS上,以方便后续的MapReduce计算和其他分布式处理任务。
分布式计算:对存储在HDFS中的数据进行分布式计算和处理,使用MapReduce、Spark等技术进行数据分析、挖掘和建模等操作。通过分布式计算技术,可以加速数据分析和处理的速度,提高处理效率。
数据可视化:将分析和处理后的结果以图表、地图等形式展示出来,从而方便用户理解和使用。通过可视化技术,可以使数据更加生动、直观,帮助用户更好地理解和分析数据。
系统测试和优化:对整个系统进行测试和优化,包括性能测试、功能测试、用户体验测试等多个方面。通过测试和优化,可以提高系统的稳定性、可靠性和用户满意度。
3.4 海洋气象数据爬虫设计
创建Scrapy项目:使用Scrapy框架创建一个新的项目,可以通过以下命令在命令行中执行:
scrapy startproject ocean_weather
定义Item:在Scrapy项目中,定义一个Item类来存储要爬取的数据。在ocean_weather/items.py文件中创建一个新的Item类,根据需要定义Item的字段,例如:
import scrapy
class WeatherItem(scrapy.Item):
date = scrapy.Field()
temperature = scrapy.Field()
wind_speed = scrapy.Field()
humidity = scrapy.Field()
编写Spider:在Scrapy项目中,编写一个Spider来实现具体的爬取逻辑。在ocean_weather/spiders目录下创建一个新的Spider文件,例如weather_spider.py,并编写爬虫代码。下面核心代码:
表3-1 海洋气象网爬虫核心代码
import scrapyfrom ocean_weather.items import WeatherItem class WeatherSpider(scrapy.Spider): name = "weather" start_urls = [ 'http://example.com/weather', # 要爬取的起始URL ] def parse(self, response): # 解析网页内容,提取数据 # 使用XPath或CSS选择器提取需要的数据 date = response.xpath('//div[@class="date"]/text()').get() temperature = response.xpath('//div[@class="temperature"]/text()').get() wind_speed = response.xpath('//div[@class="wind-speed"]/text()').get() humidity = response.xpath('//div[@class="humidity"]/text()').get() # 创建一个Item对象,并将提取的数据存入其中 item = WeatherItem() item['date'] = date item['temperature'] = temperature item['wind_speed'] = wind_speed item['humidity'] = humidity yield item |
配置Pipeline:在Scrapy项目中,可以使用Pipeline对爬取到的数据进行处理和存储。打开ocean_weather/settings.py文件,找到ITEM_PIPELINES配置项,并启用Pipeline:
python
ITEM_PIPELINES = {
'ocean_weather.pipelines.WeatherPipeline': 300, # 启用自定义的Pipeline,并设置优先级
}
编写Pipeline:在Scrapy项目中,编写一个自定义的Pipeline来处理爬取到的数据。在ocean_weather/pipelines.py文件中创建一个新的Pipeline类,例如:
python
class WeatherPipeline(object):
def process_item(self, item, spider):
# 处理数据,例如存储到数据库或写入文件等
# 这里只是简单地打印数据
print(item)
return item
运行爬虫:在命令行中运行Scrapy爬虫,执行以下命令:
scrapy crawl weather
3.5 Hive分析程序设计
原始的海洋气象信息数据一般信息较为冗杂,且很难看出规律,因此我们需要数据存储在HDFS上,数据在多台机器上保存了n份,保证了原始数据的高可用。然后通过Hive框架开发程序,将海量的原始数据计算过程分成一个个的
job提交到yarn上管理执行。
表3-2 海洋气象Hive分析代码
-- 创建天气数据表CREATE TABLE weather_data ( date STRING, temperature INT, humidity INT, wind_speed INT )ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; -- 加载天气数据 LOAD DATA INPATH 'hdfs://path/to/weather/data.csv' INTO TABLE weather_data; -- 查询最高温度和最低湿度SELECT MAX(temperature) AS max_temperature, MIN(humidity) AS min_humidityFROM weather_data; -- 查询每个月的平均风速SELECT MONTH(date) AS month, AVG(wind_speed) AS avg_wind_speedFROM weather_dataGROUP BY MONTH(date); |
海洋天气数据是指收集和分析有关海洋环境和气象状况的数据。Hive是一种基于Hadoop的数据仓库工具,可以用于管理和分析大规模数据集。对于海洋天气数据的Hive分析,可以按照以下步骤进行:
数据清洗:使用Hive进行数据清洗,包括去除重复数据、处理缺失值和异常值等。可以使用Hive的数据转换和过滤功能来完成这些操作。
数据存储:将清洗后的数据存储到Hive表中。可以根据数据特征和需求设计合适的表结构,并使用Hive的数据导入功能将数据加载到表中。
数据查询与分析:使用Hive的SQL-like查询语言(HQL)进行数据查询和分析。可以编写HQL查询语句来获取特定时间范围内的海洋天气数据,或者进行数据聚合和统计分析。
数据可视化:将查询结果进行可视化展示,可以使用工具如Tableau、Power BI等将Hive查询结果导入并生成图表、地图等形式的可视化报表。
4 后台系统实现
基于大数据的海洋气象信息分析平台的基本业务功能是采用Flask框架实现的, 前端采用Echarts技术,数据 存储采用关系型数据库Mysql。在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。
4.1 开发环境与配置
本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于大数据的海洋气象信息分析平台使用Pycharm集成开发工具。本系统的主要开发环境以及开发工具如表4-1所示。
表4-1 系统开发环境和工具
项目 | 系统环境及版本 |
硬件环境 | Windows 64 位操作系统 |
Python版本 | 3.5 |
数据库 | MySql |
开发工具 | Pycharm |
项目架构 | Hive+Flask+Scrapy |
表4-2 系统配置代码
from flask import Flask app = Flask(__name__) # 配置对象class Config: DEBUG = False SECRET_KEY = 'your_secret_key' DATABASE_URI = 'your_database_uri' # 加载配置 app.config.from_object(Config) # 路由和视图函数@app.route('/')def index(): return 'Hello, World!' if __name__ == '__main__': app.run() |
上述代码中,我们首先定义了一个名为Config的配置对象,其中包含了一些常用的配置项。你可以根据自己的需求添加、修改或删除配置项。在这个示例中,我们添加了DEBUG、SECRET_KEY和DATABASE_URI三个配置项。
接着,我们使用app.config.from_object(Config)方法加载配置对象,将其应用到Flask程序中。
然后,我们定义了一个名为index的路由和视图函数,用于处理根路径的请求。在这个示例中,当用户访问根路径时,浏览器将显示Hello, World!消息。
最后,通过app.run()方法启动Flask应用程序。
你可以根据自己的需求,添加更多的路由和视图函数,并在配置对象中定义适当的配置项。例如,你可以添加数据库连接信息、日志配置、文件上传限制等。需要注意的是,SECRET_KEY是用于加密session数据的密钥,你应该使用一个随机的、安全的字符串来设置它。
另外,你还可以将配置信息存储在独立的配置文件中,并使用app.config.from_pyfile('your_config_file.py')方法加载配置文件。这样可以将配置与代码分离,方便在不同环境下进行配置切换。
4.2 数据库的设计
数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。
根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、海洋气象信息等数据库表。
用户的属性包括用户编号、用户名、密码和性别、注册账号的时间。用户实体属性图如图4-2所示:
图4-2 用户实体属性图
根据以上分析,各个实体之间有一定的关系,使实体与实体可以联系起来,建立成整个系统的逻辑结构,本系统中,普通用户通过对海洋气象信息的管理,使海洋气象信息与用户实体存在对应关系。
表4-3 海洋气象类代码
# 创建海洋气象数据表 cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS jobs ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, company TEXT, location TEXT, salary INTEGER ) ''') conn.commit() # 插入海洋气象数据def insert_job(title, company, location, salary): cursor.execute('INSERT INTO jobs (title, company, location, salary) VALUES (?, ?, ?, ?)', (title, company, location, salary)) conn.commit() # 查询海洋气象数据def query_jobs(): cursor.execute('SELECT * FROM jobs') return cursor.fetchall() # 更新海洋气象数据def update_job(id, title, company, location, salary): cursor.execute('UPDATE jobs SET title=?, company=?, location=?, salary=? WHERE id=?', (title, company, location, salary, id)) conn.commit() # 删除海洋气象数据def delete_job(id): cursor.execute('DELETE FROM jobs WHERE id=?', (id,)) conn.commit() # 关闭数据库连接def close_connection(): cursor.close() conn.close() |
4.3 系统功能模块实现
用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。其配置文件中配置了相应的工具类,当用户登录系统进行身份认证和权限控制时,会在该类中从数据库获取到用户信息及其具有的权限信息,并 且比较用户输入的账号是否存在或者输入的密码与数据源中的密码是否匹配。具体流程如时序图如4-2所示。
图4-2登录认证流程图
海洋气象信息大数据分析系统的用户登录界面如下图所4-3所示:
图4-3用户登录界面
登陆成功后,系统会成功跳转至首页,在首页中,位于上方的横栏是对本系统的基本信息的描述和欢迎登录效果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本系统的导航菜单,可折叠展示,较为方便,右方则为欢迎页效果。海洋气象信息大数据分析系统的首页界面如下图所4-4所示:
图4-4海洋气象信息大数据系统首页界面
4.3.2海洋气象信息管理功能
海洋气象信息管理功能是对海洋气象信息进行查询,删除等操作的功能集合,海洋气象信息管理功能使用到了海洋气象信息表海洋气象信息大数据分析系统的海洋气象信息管理功能界面如下图所4-5所示:
图4-5海洋气象信息管理菜单界面
海洋气象信息管理
功能流程功能图如图3-6所示:
图4-6 海洋气象信息管理功能流程图
通过“海洋气象信息管理”按钮,进入海洋气象信息管理界面,用户可以看到海洋气象信息列表,例如:
时间:记录观测数据的时间戳或时间段。
经纬度:记录观测点位的地理位置坐标,用于定位观测点所在的海洋区域。
风速和风向:记录海洋表面风的强度(通常以米/秒或节计量)和风向(通常以度数或罗盘方位表示)。
海浪高度和周期:记录海浪的高度(通常以米计量)和周期(通常以秒计量)。
海水温度:记录海洋表面或特定深度处的水温(通常以摄氏度或华氏度表示)。
相对湿度:记录空气中的湿度水平(通常以百分比表示)。
气压:记录大气压强的数值(通常以帕斯卡或百帕计量)。
能见度:记录能够在海上或空中看到的最远距离(通常以米或海里计量)。
降水量:记录降水的量度(通常以毫米或英寸表示)。
天气状况:描述当前海洋区域的天气状态,如晴朗、多云、阴天、暴风雨等。 警报信息:如有海洋灾害或突发天气事件,记录相应的警报级别和详细信息。
通过此界面,用户可以对海洋气象信息进行删除管理操作。
4.3.3海洋气象信息可视化分析功能
数据可视化模块就是对我们采集和计算的分析结果的展示。数据分析模块的
数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式进行展示,从而形象直观地表达数据蕴含的信息和规律。
海洋气象信息大数据分析可视化开发的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂海洋气象数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,避免为展示而展示;配色一般以深色调为主,注重整体背景和单个视觉元素背景的一致性。本文使用Echarts中地图、线条等组件,将分析结果较为直观的展示给平台用户,使得用户能够简便的获取有效的信息。
4.4 本章小结
本章主要分析了基于大数据的海洋气象信息分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了基于Hive的海洋气象信息大数据分析系统的搭建环境和开发步骤,包括程序中的一些数据库配置等。前端页面采用的是Echarts和html实现。
5 总结与展望
5.1 系统开发遇到的问题
由于基于大数据海洋气象信息分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括大数据技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。
5.2 总结与展望
大数据海洋气象信息系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计等,是一个具有实际应用意义的管理系统。根据本毕业设计要求,经过四个多月的设计与开发,大数据海洋气象信息系统基本开发完毕。其功能基本符合用户的需求。
为保证有足够的技术能力去开发本系统,首先本人对开发过程中所用到的工
具和技术进行了认真地学习和研究,详细地钻研了基于Python的网络爬虫技术
以及Echarts, CSS, HTML等前端开发技术,同时还研究了大数据开发技术Hadoop, HDFS, Hive等。
[1]瞿洋.海洋环境数据管理与军事应用[J].电子技术与软件工程,2019,(14): 171-172.
[2]侯雪燕,洪阳,张建民等.海洋大数据:内涵、应用及平台建设[J].海洋通报,2017,36(04):361-369.
[3]黄波,胡龙平,汪荣幸等.海洋气象智能预报系统的设计与研制[J].信息与电脑(理论版),2020,32(14):140-145.
[4]常志刚.网络化背景下农业气象服务需求探究[J].农民致富之友,2017(21):146.
[5]黄彬,赵伟.国家级海洋气象业务现状及发展趋势[J].气象科技进展,2017,7(04):53-59.
[6]宋玲芝,宋志明,程有英等. 海洋气象环境的可视化技术研究[C]//中国造船工程学会电子技术学术委员会.中国造船工程学会电子技术学术委员会2011年海战场电子信息技术学术年会论文集.《舰船电子工程》杂志社,2011:5.
[7]王倩, 李天柱,刘小琴.全球大数据研究的历史演进:1993-2016 年[J].中国科技论坛,2017(7).
[8]李国君.海洋气象调查资料处理技术的研究与应用[D].天津大学,2021.DOI:10.27356/d.cnki.gtjdu.2019.001931.
[9]王天巍,陈有龙,冯文.泛南海气象服务平台的应用与效益分析[J].气象科技进展,2020,10(04):133-136.
[10]汪光骅,王晨宇.网络化背景下农业气象服务需求探究[J].新农业,2018(17):56-57.
[11]安邦.基于用户偏好的短视频混合推荐系统研究与实现[D].西安石油大学,2023.DOI:10.27400/d.cnki.gxasc.2023.000806
[12]史得道,吴振玲,高山红,等.海雾预报研究综述[J].气象科技进展 ,2016,6(2):49-55
[13] Rajkumar Buyya,Cloud Computing Principles And Paradigms[M].Indianaplis[M]
.Indianapolis:Wiley Publishing Inc,2011.
[14] Eben Hewitt,Cassandra:The Definitive Guide[M].Sebastopol:O’Reilly Media Inc,2011.
[15]Geoinformation; New Findings in Geoinformation Described from Nanjing University (A Spatial Lattice Model Applied for Meteorological Visualization and Analysis)[J].Politics Government Week,2017,
时光飞逝,四年的本科生生涯即将结束。在这四年的时光里,有遇到难题时的手足无措,有获得专业进步时的开心。经历了许多的事情,自己也在不知不觉中成长了很多,心中充盈最多的仍是感激。
首先感谢我的导师,她严谨的治学态度深深地影响每位同学。我要感谢我的父母,他们总是默默的付出,在生活上给与我最大的帮助,在学习上也给我很多建议。
最后,由衷的感谢各位评审老师在百忙之中抽出时间来参与我的论文评审和答辨。