当前位置: 首页 > 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+原理到工程实践
  • 美联储官员:货币政策不会立即改变,金融市场波动或致美国经济增长承压
  • 中共中央政治局召开会议,分析研究当前经济形势和经济工作,中共中央总书记习近平主持会议
  • 百台新车首秀上海车展,跨国车企联手中国技术开启智能化下半场
  • “雷公”起诉人贩子王浩文案开庭:庭审中不承认拐走川川
  • 西安市优化营商环境投诉举报监督平台上线,鼓励实名检举控告
  • 灰鹦鹉爆粗口三年未改?云南野生动物园:在持续引导