数据: AURA MLS水汽产品HDF格式 数据来源:NO
本报告将为您介绍AUR MLS水汽产品的基本概念和应用领域,并展示相关数据经过可视化处理后的结果
Aura 卫星上的微波临边探测(Microwave Limb Sounder, MLS)是卫星遥感大气垂直分布最有代表性的技术之一. 它能够测量多种大气化学成分和气象要素(如温度、气压等)从上对流层到中间层的垂直分布, 是卫星遥感大气垂直分布的主流产品. MLS 通过探测上层大气不同化学成分在毫米和亚毫米波段辐射来实现测量. 20 世纪 70 年代中期美国空气推进实验室开始研究这一技术, 并应用到卫星大气探测上, 已有代表性是高层大气研究(UARS)卫星 MLS 产品(Waters 等, 1999). 2004 年美国发射了装备 MLS 探测器的 Aura 卫星, 分别利用 190 和 240 GHz 探测水汽和臭氧, 提供了自 2004 年 8 月以来全球对流层上层到中间层的水汽和臭氧垂直分布(Waters 等, 2006). Aura-MLS 廓线产品也不断更新, 1.5, 2.2 和 3.3 版已公开(Livesey 等, 2011). MLS 臭氧廓线已用于气象资料的同化并显示出较好的效果(Feng 等, 2008).
颜晓露, 郑向东, 周秀骥, 等. 2015. 夏季青藏高原及其周边地区卫星 MLS 水汽、臭氧产品的探空检验分析. 中国科学: 地球科学, 45:
335–350
MLS 2级数据以HDF-EOS版本5格式提供。当前数据版本为 v4 。在 v4 中,“标准”产品包括丰度的垂直剖面 BrO,CH3Cl,CH3CN,CH3OH,ClO,CO,H2O,HCl,HCN,HNO3,HO2,HOCl,N2O,O3,OH和SO2,以及温度, 地势高度、相对湿度(根据H2O和温度数据推算)、云冰含水量和 云冰水路径,都被描述为压力的函数。
对于大多数产品,配置文件输出在网格上垂直间距为每十倍频程六个表面,对流层和平流层上部的压力变化(~2.5 km) (以上较粗)。水蒸气、温度、臭氧和相对湿度在每十年 12 个更精细的网格上输出,最高可达 1百帕。由于对检索系统施加了平滑处理,增强了稳定性和精度,真正的垂直和 产品的沿轨道水平分辨率通常比报告网格粗糙一些。
标准产品存储在根据约定命名的文件中:MLS-Aura_L2GP-v04-20-c01.he5。文件以一天的粒度(午夜到午夜,世界时)生成,并按观察日期命名, 其中 是四位数的日历年, 是该年中的日期数字 (001 = 1 月 <> 日)。
以上为官网的v4说明,本文数据用的v5,差别不大。
import os
import h5py
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import numpy as np
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
FILE_NAME = '/home/mw/input/MLS6867/MLS-Aura_L2GP-H2O_v05-01-c01_2022d015.he5'
# 定义路径
data_path = '/HDFEOS/SWATHS/H2O/Data Fields/L2gpValue'
pres_path = '/HDFEOS/SWATHS/H2O/Geolocation Fields/Pressure'
lat_path = '/HDFEOS/SWATHS/H2O/Geolocation Fields/Latitude'
lon_path = '/HDFEOS/SWATHS/H2O/Geolocation Fields/Longitude'
subset = 0
with h5py.File(FILE_NAME, mode='r') as f:
# 读取数据
data = f[data_path][:, subset]
pres = f[pres_path][:]
punits = f[pres_path].attrs['Units'].decode()
units = f[data_path].attrs['Units'].decode()
longname = f[data_path].attrs['Title'].decode()
latitude = f[lat_path][:]
longitude = f[lon_path][:]
fig = plt.figure(figsize=(20, 12))
ax = plt.subplot(1, 1, 1, projection=ccrs.PlateCarree())
ax.coastlines(linewidth=0.5)
levels = np.linspace(data.min(), data.max(), 50)
# 绘制散点图
im = ax.scatter(longitude, latitude, c=data, marker='o', s=10, cmap=plt.cm.jet, transform=ccrs.PlateCarree())
cb = plt.colorbar(im, orientation='vertical', format='%.1e')
cb.set_label(units)
gl = ax.gridlines(draw_labels=True, alpha=0.5, linewidth=1, color='k', linestyle='--')
gl.xlabels_top = False
gl.ylabels_right = False
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
basename = os.path.basename(FILE_NAME)
long_name = f'{longname} at pressure={pres[subset]} {punits}'
plt.title(f'{basename}\n{long_name}')
plt.show()
In [ ]:
f2 = h5py.File('/home/mw/input/MLS6867/MLS-Aura_L2GP-BrO_v05-01-c01_2022d019.he5', 'r')
def print_hdf5(name, obj):
print(name)
if isinstance(obj, h5py.Group):
for key in obj.keys():
subname = '{}/{}'.format(name, key)
print_hdf5(subname, obj[key])
print_hdf5('/', f2)
/
//HDFEOS
//HDFEOS/ADDITIONAL
//HDFEOS/ADDITIONAL/FILE_ATTRIBUTES
//HDFEOS/SWATHS
//HDFEOS/SWATHS/BrO
//HDFEOS/SWATHS/BrO/Data Fields
//HDFEOS/SWATHS/BrO/Data Fields/BrO
//HDFEOS/SWATHS/BrO/Data Fields/BrOPrecision
//HDFEOS/SWATHS/BrO/Data Fields/Convergence
//HDFEOS/SWATHS/BrO/Data Fields/L2gpPrecision
//HDFEOS/SWATHS/BrO/Data Fields/L2gpValue
//HDFEOS/SWATHS/BrO/Data Fields/Quality
//HDFEOS/SWATHS/BrO/Data Fields/Status
//HDFEOS/SWATHS/BrO/Geolocation Fields
//HDFEOS/SWATHS/BrO/Geolocation Fields/ChunkNumber
//HDFEOS/SWATHS/BrO/Geolocation Fields/Latitude
//HDFEOS/SWATHS/BrO/Geolocation Fields/LineOfSightAngle
//HDFEOS/SWATHS/BrO/Geolocation Fields/LocalSolarTime
//HDFEOS/SWATHS/BrO/Geolocation Fields/Longitude
//HDFEOS/SWATHS/BrO/Geolocation Fields/OrbitGeodeticAngle
//HDFEOS/SWATHS/BrO/Geolocation Fields/Pressure
//HDFEOS/SWATHS/BrO/Geolocation Fields/SolarZenithAngle
//HDFEOS/SWATHS/BrO/Geolocation Fields/Time
//HDFEOS/SWATHS/BrO/nLevels
//HDFEOS/SWATHS/BrO/nTimes
//HDFEOS/SWATHS/BrO/nTimesTotal
//HDFEOS/SWATHS/BrO-APriori
//HDFEOS/SWATHS/BrO-APriori/Data Fields
//HDFEOS/SWATHS/BrO-APriori/Data Fields/BrO-APriori
//HDFEOS/SWATHS/BrO-APriori/Data Fields/BrO-APrioriPrecision
//HDFEOS/SWATHS/BrO-APriori/Data Fields/Convergence
//HDFEOS/SWATHS/BrO-APriori/Data Fields/L2gpPrecision
//HDFEOS/SWATHS/BrO-APriori/Data Fields/L2gpValue
//HDFEOS/SWATHS/BrO-APriori/Data Fields/Quality
//HDFEOS/SWATHS/BrO-APriori/Data Fields/Status
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/ChunkNumber
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/Latitude
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/LineOfSightAngle
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/LocalSolarTime
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/Longitude
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/OrbitGeodeticAngle
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/Pressure
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/SolarZenithAngle
//HDFEOS/SWATHS/BrO-APriori/Geolocation Fields/Time
//HDFEOS/SWATHS/BrO-APriori/nLevels
//HDFEOS/SWATHS/BrO-APriori/nTimes
//HDFEOS/SWATHS/BrO-APriori/nTimesTotal
//HDFEOS INFORMATION
//HDFEOS INFORMATION/StructMetadata.0
//HDFEOS INFORMATION/coremetadata.0
//HDFEOS INFORMATION/xmlmetadata