从气象中心采集cma台风路径数据

在自然灾害监测与预警领域,台风作为一种极具破坏力的自然现象,其路径预测和强度评估对于减少潜在损失至关重要。随着互联网技术的发展,国家气象中心等专业机构提供了详尽的台风历史数据和实时跟踪服务,通过网络接口可便捷地访问这些信息。

最近江浙沪地区,“贝碧嘉”和“普拉桑”台风接连登陆,门窗紧闭的情况下屋内一度都渗进雨水了。故想看下怎么实现从气象中心等专业机构采集台风路径数据。参考github项目(项目地址https://github.com/SQYQianYe/scraping-cma-typhoon-data)并对代码进行简单整理。

代码主要利用Python编程语言和相关库(如requests, json, re, datetime, 和 pandas)从中国国家气象中心(NMC)获取台风数据,并对其进行解析、处理和存储。

代码实现

导入相关库

# -*- coding: UTF-8 -*-
# 导入相关库
import requests
import json
import re
import time
import pandas as pd
import datetime

获取特定台风的详细信息

定义函数获取特定台风的详细信息:

# 定义函数获取特定台风的详细信息
def get_tc_info(item):# 创建13位时间戳t = int(round(time.time() * 1000))# 构建URL并发送GET请求url = 'http://typhoon.nmc.cn/weatherservice/typhoon/jsons/view_%s?t=%s&callback=typhoon_jsons_view_%s' % (item['id'], t, item['id'])html_obj = requests.get(url, headers=headers, verify=False).text# 提取JSON数据data = json.loads(re.match(".*?({.*}).*", html_obj, re.S).group(1))['typhoon']# 创建字典存储台风信息info_dicts = { 'tc_num':item['tc_num'],  # 台风编号'name_cn':item['name_cn'], # 中文名称'name_en':item['name_en'], # 英文名称'dateUTC':[],    # UTC日期'dateCST':[],    # CST日期'vmax':[],    # 最大风速 m/s'grade':[],   # 强度等级'lat':[],   # 纬度'lon':[],   # 经度'mslp':[],    # 中心气压 hPa'attr':[]   # 属性:预报或分析}# 遍历分析数据for v in data[8]:info_dicts['dateUTC'].append(v[1])info_dicts['dateCST'].append(date_pred(v[1], 8))  # 将UTC时间转换为CST时间info_dicts['vmax'].append(v[7])info_dicts['grade'].append(get_type(v[3]))info_dicts['lon'].append(v[4])info_dicts['lat'].append(v[5])info_dicts['mslp'].append(v[6])info_dicts['attr'].append('analysis')# 获取最新预报时间dateUTC0 = info_dicts['dateUTC'][-1]# 处理最新预报if len(data[8][-1]) > 11 and data[8][-1][11] is not None and 'BABJ' in data[8][-1][11]:BABJ_list = data[8][-1][11]['BABJ']for i in range(len(BABJ_list)):# 获取预报前置时间(小时)pred_hour = int(BABJ_list[i][0])# 预测UTC时间dateUTC_pred = date_pred(dateUTC0, pred_hour)info_dicts['dateUTC'].append(dateUTC_pred)info_dicts['dateCST'].append(date_pred(dateUTC_pred, 8))info_dicts['vmax'].append(BABJ_list[i][5])info_dicts['grade'].append(get_type(BABJ_list[i][7]))info_dicts['lon'].append(BABJ_list[i][2])info_dicts['lat'].append(BABJ_list[i][3])info_dicts['mslp'].append(BABJ_list[i][4])info_dicts['attr'].append('forecast')# 将字典转换为DataFrametc_info = pd.DataFrame(info_dicts)# 返回DataFramereturn tc_info

主函数

# 主程序入口
if __name__ == "__main__":# 设置请求头(重复,应避免)headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}# 输入年份year = input("请输入年份: ")# 显示该年份的台风编号和名称show_tc_nums_and_names_by_year(year)# 输入台风TC编号(四位数字)num = input("请输入台风TC编号(TC后面四位数字): ")# 获取台风信息data = get_tc_info_by_year_and_num(year, num)# 如果数据存在,则打印并保存到CSV和Excel文件if data is not None:print(data)# 可以按需保存为xlsxdata.to_csv(rf'{year}_TC{num}.csv', index=False)print(f"台风{num}的数据已保存到文件{year}_TC{num}.csv")# 如果未找到数据,则打印提示else:print(f"在{year}年未找到台风{num}的数据。")

结果展示

台风“贝碧嘉”路径

如下,以贝碧嘉为例,输入年份与台风编码后4位,可以获取相应台风路径数据。由于篇幅有限,只展示了部分代码,完整代码可以回复关键词获取或者参考原项目。

在这里插入图片描述

推荐阅读
  • 【可视化】用pyecharts绘制我国人口分布
  • 【爬虫】软科2024中国大学榜爬取
  • 【可视化】绘制中国标准行政区划地图(2024版)

欢迎关注我的公众号“AI拾贝”,原创技术文章第一时间推送。后台发送typhoon,自动回复源码和数据。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm+vue665基于Java的壁纸网站设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

Applied Artificial Intelligence

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网:https://ais.cn/u/3eEJNv 三、服务简述 四、投稿须知 1.在线投稿:由艾思科蓝支持在线投稿,请将文章全文投稿至艾思科蓝投稿…

oracle-函数-NULLIF (expr1, expr2)的妙用

【语法】NULLIF (expr1, expr2) 【功能】expr1和expr2相等返回NULL,不相等返回expr1经典的使用场景: 1. 数据清洗与转换 在数据清洗过程中,NULLIF 函数可以用于将某些特定值(通常是无效或不需要的值)替换为 NULL&…

pycharm 安装

双击pycharm-community-2024.2.0.1.exe安装包 可以保持默认,也可以改成D,如果你有D 盘 全选,下一步 安装完成 在桌面创建一个文件夹任意名字 拖动到pycharm 图标打开 如果出现这个勾选信任即可 下面准备汉化(喜欢英语界面的…

Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)

一、蚁群算法 蚁群算法由意大利学者Dorigo M等根据自然界蚂蚁觅食行为提岀。蚂蚁觅食行为表示大量蚂蚁组成的群体构成一个信息正反馈机制,在同一时间内路径越短蚂蚁分泌的信息就越多,蚂蚁选择该路径的概率就更大。 蚁群算法的思想来源于自然界蚂蚁觅食&a…

计算机毕业设计Hadoop+大模型高考推荐系统 高考分数线预测 知识图谱 高考数据分析可视化 高考大数据 大数据毕业设计 Hadoop 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 开题报告 题目&#xff1a…

【qwen2-1.5-instruct 好于Gemma2-2b-instruct\Llama3.2-1B-instruct】

最新的qwen Llama Gemma小参数模型比较,移动端 qwen2-1.5-instruct 好于Gemma2-2b-instruct\Llama3.2-1B-instruct 从 Qwen2–1.5B-instruct 到 Gemma2–2B-instruct,再到 Llama3.2–1B-instruct,最后是新的 Qwen2.5–1.5B-instruct。虽然我…

C++之位算法

位算法 常见位运算总结 位1的个数 给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。 示例 1: 输入:n 11 输出:3 解释…

JAVA利用方法实现四道题

目录 1.给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回-1 2.计算字符串最后一个单词的长度,单词以空格隔开。(注:字符串末尾不以空格为结尾) 3.如果在将所…

【教程】Git 标准工作流

前言 Git 是日常开发中常用的版本控制工具,配合代码托管仓库(如,Github,GitLab,Gitee 等)用来实现多人多版本的协作开发。 但是 Git 的命令纷繁复杂,多如累卵,不可能也不需要全部搞…

基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发

在中医针灸的传统治疗中,穴位取穴的精确度对于治疗效果至关重要。然而,传统的定位方法,如体表标志法、骨度折量法和指寸法,由于观察角度、个体差异(如人体姿态和皮肤纹理)以及环境因素的干扰,往…

金融标准体系

目录 基本原则 标准体系结构图 标准明细表 金融标准体系下载地址 基本原则 需求引领、顶层设计。 坚持目标导向、问题导向、结果 导向有机统一,构建支撑适用、体系完善、科学合理的金融 标准体系。 全面系统、重点突出。 以金融业运用有效、保护有力、 管理高…

.NET 8 Web API 中的身份验证和授权

本次介绍分为3篇文章: 1:.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2:在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3:.NET …

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

字符串统计(Python)

接收键盘任意录入,分别统计大小写字母、数字及其它字符数量,打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建,本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…

qt QScrollArea详解

1、概述 QScrollArea是Qt框架中的一个控件,它提供了一个可滚动的视图区域,用于显示超出视图大小的内容。这个控件非常有用,尤其是在处理大型表格、文本区域、图像集合或任何需要滚动浏览的内容时。QScrollArea本身不直接显示内容&#xff0c…

HTML 基础标签——元数据标签 <meta>

文章目录 1. `<meta>` 标签概述2. 属性详解2.1 `charset` 属性2.2 `name` 属性2.3 `content` 属性2.4 `http-equiv` 属性3. 其他常见属性小结在 HTML 文档中,元数据标签 <meta> 是一种重要的标签,用于提供关于文档的信息,这些信息不直接显示在网页内容中,但对于…

InnoDB: corruption in the InnoDB tablespace

磁盘空间满和断电都可能导致mysql无法启动&#xff0c;报错如下&#xff1a; InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 20241031 10:54:…

Java网络通信

前言 1. 基本知识 通俗一点就是CS就是要下载应用来访问的&#xff0c;BS是在浏览器上面访问的&#xff0c;不用下载 1.1 IP IP地址就是你电脑的主机号&#xff0c;一台设备都有唯一的IP&#xff0c;端口就是程序的唯一标识 这上面就是我们的ip地址了&#xff0c;有IPv4和…

iptables面试题

1、详述iptales工作流程以及规则过滤顺序&#xff1f; iptables过滤的规则顺序是由上至下&#xff0c;若出现相同的匹配规则则遵循由上至下的顺序 2、iptables的几个表以及每个表对应链的作用&#xff1f; Iptables有四表五链 Filter表 : Filter表是iptables中使用的默认表…