基于Python的GIS分析之台风路径可视化(一) 您所在的位置:网站首页 台风的动态图 基于Python的GIS分析之台风路径可视化(一)

基于Python的GIS分析之台风路径可视化(一)

2024-06-18 11:29| 来源: 网络整理| 查看: 265

摘要:2017年8月底,台风“天鸽”、“帕卡”、“泰利”相继(即将)造访我国,飓风“哈维”、“艾玛”席卷美国,给当地造成了巨大的财产和人员损失。如果能够借助历史数据,分析我国的台风灾害风险,无疑对于防灾减损具有重要意义。我们利用中国气象局提供的台风数据集,基于Python,利用Cartopy、Pandas等做了西北太平洋台风路径的可视化。

数据读取 数据说明

目前有许多机构发布台风的历史和实时路径,我们采用中国气象局热带气旋资料中心提供的数据集作为分析基础。现行版本的CMA热带气旋最佳路径数据集提供1949年以来西北太平洋(含南海,赤道以北,东经180°以西)海域热带气旋每6小时的位置和强度,按年份分别放在单独的文本文件中。

数据集文件的命名方式为CHYYBST.txt,以空格分隔的CSV文件。在每一个文件中,包含两类内容:

头记录 每一个热带气旋有一个头记录; 每一个头记录占单独一行; 头记录以“66666”开头,包含编号、数据行数、数据频率等信息

CMA热带气旋最佳路径数据集头记录

最佳路径数据记录 最佳路径数据记录紧随头记录之后,其行数可以从头记录中看到; 每一行的数据包括时间(YYYYMMDDHH)、强度、纬度、经度、中心最低气压、2分钟平均近中心最大风速、2分钟平均风速等。

CMA热带气旋最佳路径数据记录

读取文件

前面提到,虽然CHBST的数据集是txt文件,但是可以按照csv文件的格式读取,借助Python的pandas模块完成数据读取。需要注意的是,CHBST的数据是按照年为单位,每一年存放在一个文本文件当中,因此实际上是要完成的指定目录下所有txt文件的读取。

glob.glob()获取文件列表

在读取的过程,首先要获取指定文件夹下的所有文件,利用python的glob模块,可以查找符合特定规则的文件路径名,这一点与windows下搜索文件类似,并且glob可以采用匹配符:"“, “?”, “[]”。”“匹配0个或多个字符;”?“匹配单个字符;”[]"匹配指定范围内的字符,如:[0-9]匹配数字。具体代码如下:

123# Get files of specified format under the directoryfile_list = glob.glob(r"./Data/*.txt")# Detailed info at http://tcdata.typhoon.org.cn/zjljsjj_sm.html pandas.read_csv()读取文件

接下来,我们就可以对file_list中的每一个文件依次进行读取。

12for file in file_list: temp_ty_data = pre_process(file)

python读取csv文件的方法有很多,简单起见,我们采用pandas模块的read_csv()函数加载数据。根据CMA的说明可知,头记录每一行有9列,而最佳路径数据记录每行为7列,read_csv()会按照最多的也就是9列读取,最佳路径记录中确实的则补充为None。

使用read_csv()时可以加入一些参数,例如sep,header,names,dtype等对分隔符、列名、数据类型等加以限定。具体的代码为

123file_data = pd.read_csv(destfile, sep='\s+', header=None, names=['time', 'level', 'lats', 'lons', 'pres', 'wind', 'ty_serial', 'chn_id', 'name'], dtype=object) 台风数据预处理

为了后续分析的需要,对数据做了预处理。我们对每一个热带气旋序号和台风编号加上年份的前缀,年份可以从文件名中提取。同时,我们将头记录中包含的“热带气旋序号”、“台风编号”、“台风名称”等提取出来加入到BST记录中,这样就可以删除头记录,统一数据格式。

123456for s in temp.index: file_data.ix[s:s + int(temp.ix[s, 'lats']), ['ty_serial', 'chn_id', 'name']] = [year + temp.ix[s, 'lons'], temp.ix[s, 'pres'], temp.ix[s, 'chn_id']]file_data.drop(temp.index, inplace=True) 台风数据准备完毕

经过以上步骤,台风数据就整理为一个N行9列的矩阵,储存储为DataFrame。如果只是每次读取一个台风的话,其实可以不用如此处理,在这里,一方面是想展示Python读取数据的过程,另一方面更重要的是,可以对历史台风做时间和空间上的分析。

未完待续——基于Python的GIS

目前,我们只完成了历史台风数据的准备,接下来,我们将逐步进入正题,实现台风数据的可视化。

参考文献 http://tcdata.typhoon.org.cn/zjljsjj_sm.html 中国气象局热带气旋资料中心 https://docs.python.org/3/library/glob.html glob技术文档 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html pandas技术文档 https://book.douban.com/subject/25779298/ 《利用Python进行数据分析》


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有