当前位置: 首页 > news >正文

热带气旋【CH报文数据插值】中央气象台-台风路径数据每小时插值

对CH报文数据进行每小时插值

原始数据文件

在这里插入图片描述

数据

在这里插入图片描述
三小时一次的报文数据

需求

按小时补齐热带气旋路径信息
插值后数据效果如下:
在这里插入图片描述

插值代码

# 对ch文件插值import pandas as pd
import datetime
import osdef interpolate_ch_one_hour (file_name):new_file_name=file_name.split('.')[0]+'_new.txt'with open(file_name,'r') as f:content=f.readlines()def write_line(line):if not line.endswith('\n'):line+='\n'try:with open(new_file_name,'r') as f:content=f.readlines()if line == content[-1]:print(line+' is already in the file!')return  # 重复行不写入except Exception as e:pass# print('开始写入数据:',line)with open(new_file_name,'a') as f:f.write(line)# 每个台风路径插值for i in range(len(content)):if content[i].startswith('66666'):write_line(content[i])  # 写入第一行for j in range(i+1,len(content)-1):if content[j+1].startswith('66666'):write_line(content[j])  # 写入中间行breakelse:st_line=content[j].split(' ')et_line=content[j+1].split(' ')if st_line[2]=='':st_line=st_line[:2]+st_line[3:]if et_line[2]=='':et_line=et_line[:2]+et_line[3:]if st_line[3]=='':st_line=st_line[:3]+st_line[4:]if et_line[3]=='':et_line=et_line[:3]+et_line[4:]# 输入前后时间和经纬度,等小时间隔插值st_time = st_line[0]st_lat = float(st_line[2])st_lon = float(st_line[3])et_time = et_line[0]et_lat = float(et_line[2])try:et_lon = float(et_line[3])except Exception as e:print(e)print(et_line)print(et_line[3])print(j)time_interval = (datetime.datetime.strptime(et_time,'%Y%m%d%H')-datetime.datetime.strptime(st_time,'%Y%m%d%H')).seconds/60/60lat_interval = (et_lat-st_lat)/time_intervallon_interval = (et_lon-st_lon)/time_intervalfor k in range(int(time_interval)):time_now = datetime.datetime.strptime(st_time,'%Y%m%d%H')+pd.Timedelta(minutes=k*60)lat_now = st_lat+lat_interval*klon_now = st_lon+lon_interval*kline_now = time_now.strftime('%Y%m%d%H')+' '+st_line[1]+' '+str(int(lat_now))+' '+str(int(lon_now))+' '+' '.join(st_line[4:])+''write_line(line_now)write_line(content[-1])if __name__ == '__main__':list_file=['CH2021BST.txt']  # 修改成需要插值的文件名,支持多个文件# list_file=['CH2023BST.txt','CH2022BST.txt','CH2021BST.txt']for file_name in list_file:interpolate_ch_one_hour(file_name)

相关文章:

  • 【EDA】Multi-Net Routing(多网布线)
  • 【计算机视觉】CV实战项目 - 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
  • 写在后面的话
  • 11.AOP开发
  • BS客户端的单点登录
  • 东南亚与中东小游戏市场出海调研报告
  • 7.0 sharpScada的sql数据的安装
  • 如何解决windows端口被占用
  • Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(下)
  • Java—— 常见API介绍 第四期
  • 【多目标进化算法】常见多目标进化算法一览
  • IP查询专业版:支持IPv4/IPv6自动识别并切换解析的API接口使用指南
  • C++ (STL,顺序容器,关联容器,容器适配器)
  • markdown自动标题序号,标题序号,目录处理
  • 软件设计模式与体系结构:基于Java实现管道-过滤器架构
  • RunnerGo API性能测试实战与高并发调优
  • SQL Server 2019 安装与配置详细教程
  • 区间和数量统计 之 前缀和+哈希表
  • Linux内核参数调优(TCP BBR算法实践)
  • 【计算机视觉】CV实践项目- 基于PaddleSeg的遥感建筑变化检测全解析:从U-Net 3+原理到工程实践
  • 购车补贴、“谷子”消费、特色产品,这些活动亮相五五购物节
  • 周劼已任中国航天科技集团有限公司董事、总经理、党组副书记
  • 浪尖计划再出发:万亿之城2030课题组赴九城调研万亿产业
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • 智能终端出海服务创新联合体成立
  • 俄外长:俄将在不损害伙伴关系前提下发展对美关系