热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python气象数据处理与绘图:常用气象数据下载—我国台风历史轨迹数据

1、前言台风历史轨迹数据除了BST以外,还可以通过温州台风网进行查询。两者数据略有差异,BST是之后对历史台风路径进行校正后发布的,其经纬度、强度、气压具有更高


1、前言

台风历史轨迹数据除了BST以外,还可以通过温州台风网进行查询。两者数据略有差异,BST是之后对历史台风路径进行校正后发布的,其经纬度、强度、气压具有更高的可靠性,但是时间分辨率为6小时,部分3小时,这一点不如观测数据,温州台风网的数据是实时发布数据的记录,时间分辨率最高达1小时,对于台风轨迹具有更加精细化的表述。
温州台风网地址:

1http://www.wztf121.com/

2、下载数据

1# 导入模块
2import json
3import urllib.request
4import xlwt
5import datetime
6
7# 设置浏览器参数
8headers = {'Connection': 'Keep-Alive',
9           'Accept': 'text/html, application/xhtml+xml, */*',
10           'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
11           'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
12
13for year in range(2019, 2020):
14    for num in range(1,30):
15        try:  
16            number = str(year) + str(num).zfill(2)
17            chaper_url = 'http://data.istrongcloud.com/v2/data/complex/' + number + '.json'
18            req = urllib.request.Request(url=chaper_url, headers=headers)  
19            data = urllib.request.urlopen(req).read()
20            data = json.loads(data)[0]
21
22            f = xlwt.Workbook(encoding = 'utf-8')
23            sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok = True)
24            sheet1.write(0,0,'台风编号')
25            sheet1.write(0,1,'中文名称')
26            sheet1.write(0,2,'英文名称')
27            sheet1.write(0,3,'时刻')
28            sheet1.write(0,4,'经度')
29            sheet1.write(0,5,'纬度')
30            sheet1.write(0,6,'强度等级')
31            sheet1.write(0,7,'气压')
32            sheet1.write(0,8,'风速')
33            sheet1.write(0,9,'风级')
34            sheet1.write(0,10,'移速')
35            sheet1.write(0,11,'移向')
36
37            sheet1.write(0,12,'radius7')
38            sheet1.write(0,13,'radius10')
39            sheet1.write(0,14,'radius12')
40            sheet1.write(0,15,'ne_7')
41            sheet1.write(0,16,'se_7')
42            sheet1.write(0,17,'sw_7')
43            sheet1.write(0,18,'nw_7')
44            sheet1.write(0,19,'ne_10')
45            sheet1.write(0,20,'se_10')
46            sheet1.write(0,21,'sw_10')
47            sheet1.write(0,22,'nw_10')
48            sheet1.write(0,23,'ne_12')
49            sheet1.write(0,24,'se_12')
50            sheet1.write(0,25,'sw_12')
51            sheet1.write(0,26,'nw_12')
52
53            for i in range(0,len(data['points'])):
54                sheet1.write(i+1,0,data['tfbh'])
55                sheet1.write(i+1,1,data['name'])
56                sheet1.write(i+1,2,data['ename'])
57                sheet1.write(i+1,3,str(datetime.datetime.strptime(data['points'][i]['time'],'%Y-%m-%dT%H:%M:%S')))        
58                sheet1.write(i+1,4,data['points'][i]['lat'])
59                sheet1.write(i+1,5,data['points'][i]['lng'])
60                sheet1.write(i+1,6,data['points'][i]['strong'])        
61                sheet1.write(i+1,7,data['points'][i]['pressure'])
62                sheet1.write(i+1,8,data['points'][i]['speed'])
63                sheet1.write(i+1,9,data['points'][i]['power'])
64                sheet1.write(i+1,10,data['points'][i]['move_speed'])
65                sheet1.write(i+1,11,data['points'][i]['move_dir'])
66
67                sheet1.write(i+1,12,data['points'][i]['radius7'])
68                sheet1.write(i+1,13,data['points'][i]['radius10'])
69                sheet1.write(i+1,14,data['points'][i]['radius12'])
70                if data['points'][i]['radius7_quad'] != 'null':
71                    sheet1.write(i+1,15,data['points'][i]['radius7_quad']['ne'])
72                    sheet1.write(i+1,16,data['points'][i]['radius7_quad']['se'])
73                    sheet1.write(i+1,17,data['points'][i]['radius7_quad']['sw'])
74                    sheet1.write(i+1,18,data['points'][i]['radius7_quad']['nw'])
75                else:
76                    sheet1.write(i+1,15,'NaN')
77                    sheet1.write(i+1,16,'NaN')
78                    sheet1.write(i+1,17,'NaN')
79                    sheet1.write(i+1,18,'NaN')
80                if data['points'][i]['radius10_quad'] != 'null':
81                    sheet1.write(i+1,19,data['points'][i]['radius10_quad']['ne'])
82                    sheet1.write(i+1,20,data['points'][i]['radius10_quad']['se'])
83                    sheet1.write(i+1,21,data['points'][i]['radius10_quad']['sw'])
84                    sheet1.write(i+1,22,data['points'][i]['radius10_quad']['nw'])
85                else:
86                    sheet1.write(i+1,19,'NaN')
87                    sheet1.write(i+1,20,'NaN')
88                    sheet1.write(i+1,21,'NaN')
89                    sheet1.write(i+1,22,'NaN')
90                if data['points'][i]['radius12_quad'] != 'null':
91                    sheet1.write(i+1,23,data['points'][i]['radius12_quad']['ne'])
92                    sheet1.write(i+1,24,data['points'][i]['radius12_quad']['se'])
93                    sheet1.write(i+1,25,data['points'][i]['radius12_quad']['sw'])
94                    sheet1.write(i+1,26,data['points'][i]['radius12_quad']['nw'])
95                else:
96                    sheet1.write(i+1,23,'NaN')
97                    sheet1.write(i+1,24,'NaN')
98                    sheet1.write(i+1,25,'NaN')
99                    sheet1.write(i+1,26,'NaN')
100
101            f.save('typhoon/' + number + '.xls')
102            print(number+ '.xls 已下载' )
103        except:
104            break

3、读取示例数据

1import pandas as pd
2df = pd.read_excel('typhoon/201901.xls')
3print(df)





有问题可以到QQ群里进行讨论,我们在那边等大家。

QQ群号:854684131





推荐阅读
author-avatar
pet宠物情缘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有