HadSID
各位在研究的时候可能找不到自己需要的观测的站点数据,这里我们介绍HadISD数据集,该数据集提供了时间上大部分地区的观测站点数据。
详细的数据介绍以及下载教程可以看我们之前的推文:Python | Met Office | 爬取全球气象站点数据
HadISD v3.4.1.202409p 的更新已经发布, NOAA NCEI 的数据服务在飓风Helene发生洪水后已恢复上线。许多观测站点数据已更新至 2024 年 9 月 30 日,但由于摄取的数据丢失,可能会出现一些数据缺失。NOAA NCEI 正在解决这些问题。
url更新
最近后台有人问我们download_url
的问题,才发现数据已经更新了。
随着HadISD v3.4.1.202409p 的更新, 原本的download_url
也更新了。
download_url
更新为:https://www.metoffice.gov.uk/hadobs/hadisd/v341_202409p/data/hadisd.3.4.1.202409p_19310101-20241001_{site_id}.nc.gz
。
在原始的代码上将download_url
替换:
download_url = f'https://www.metoffice.gov.uk/hadobs/hadisd/v341_202409p/data/hadisd.3.4.1.202409p_19310101-20241001_{site_id}.nc.gz'
完整代码
import pandas as pd
import os
import gzip
import requests
site = pd.read_csv('hadisd_station_info_v341_202408p.txt',
delim_whitespace=True, header=None,
names=['id','latitude', 'longitude', 'altitude'])
site_alps = site[(site['longitude'] >= 5) & (site['longitude'] <= 16) &
(site['latitude'] >= 44) & (site['latitude'] <= 47.5)]
print(site_alps)
# data saving folder
save_folder_path = r'your_data_path'
os.makedirs(save_folder_path, exist_ok=True)
# download target site data
for site_id in site_alps['id']:
download_url = f'https://www.metoffice.gov.uk/hadobs/hadisd/v341_202409p/data/hadisd.3.4.1.202409p_19310101-20241001_{site_id}.nc.gz'
print(f'downloading {site_id} data from {download_url}')
response = requests.get(download_url)
response.raise_for_status() # fault report
# save file
# write/read in binary format
download_file_path = os.path.join(save_folder_path,f'{site_id}.nc.gz')
with open(download_file_path,'wb') as file:
file.write(response.content)
print(f'site {site_id} saved')
# decompress .nc.gz -> .nc
folder_path = r'your_data_path'
for filename in os.listdir(folder_path):
if filename.endswith('.nc.gz'):
file_path = os.path.join(folder_path, filename)
with gzip.open(file_path, 'rb') as gz_file:
filename_nc = os.path.splitext(filename)[0] # split filename and extension name (.gz), keep filename
file_path_nc = os.path.join(folder_path, filename_nc)
with open(file_path_nc, 'wb') as output_file:
output_file.write(gz_file.read())
print(f'{filename} decompressed')
# del .gz
os.remove(file_path)
print(f'{filename} deleted')
往期回顾
Python | MJO | 位相图 Python | 半球间经度转换 Python | 大气科学 | 偏相关 Python | 气象绘图 | 台风降水 Python | 解决 cmaps 库报错的问题 Python | 批量下载 NCEP2 再分析数据 Python | 北大西洋涛动 | NAO 指数 | EOF