CALIPSO数据处理:(二)CALIPSO_5km数据读取
可以读取任意版本5km(V3、V4的calipso),检索字段里的径向剖面。注:vfm数据读取可以参考。
·
可以读取任意版本5km(V3、V4的calipso),检索字段里的径向剖面
注:vfm数据读取可以参考CALIPSO L2 VFM 产品的读取和绘制(with Python) - Kai Wu's Blog
from pyhdf.HDF import HDF
from pyhdf.VS import VS
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
filename = 'CAL_LID_L2_05kmAPro-Standard-V4-51.2023-03-25T08-48-53ZD.hdf'
hdf = HDF(filename)
vs = hdf.vstart()
ref = vs.find('metadata')
vdata = vs.attach(ref)
records = vdata.read()
altitudes = None
for item in records[0]:
if isinstance(item, list) and all(isinstance(x, (float, int)) for x in item) and len(item) > 200:
altitudes = np.array(item, dtype=np.float32)
break
vdata.detach()
vs.end()
hdf.close()
ds = Dataset(filename, 'r')
extinction = ds.variables['Extinction_Coefficient_532'][:]
latitude = ds.variables['Latitude'][:]
lat = latitude[:, 1]
data = np.array(extinction, dtype=np.float32)
data[data == -9999] = np.nan
alt_index = (altitudes >= 0) & (altitudes <= 10)
selected_altitudes = altitudes[alt_index]
data = data[:, alt_index]
data = np.fliplr(data)
plot_altitudes = np.flipud(selected_altitudes)
plt.figure(figsize=(12, 6))
h = plt.pcolormesh(lat, plot_altitudes, data.T, shading='auto', cmap='jet')
plt.colorbar(h, label='Extinction Coefficient (km⁻¹)')
plt.xlabel('Latitude (°)')
plt.ylabel('Altitude (km)')
plt.title('CALIPSO Extinction Coefficient at 532 nm (0–10 km)')
plt.clim(0, 1.0)
plt.grid(True, linestyle='--', alpha=0.3)
plt.tight_layout()
plt.show()
import cartopy.crs as ccrs
import cartopy.feature as cfeature
longitude = ds.variables['Longitude'][:]
lon = longitude[:, 1]
plt.figure(figsize=(10, 5))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_global()
ax.coastlines()
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.add_feature(cfeature.LAND, facecolor='lightgray', edgecolor='black')
ax.add_feature(cfeature.OCEAN, facecolor='lightblue')
ax.plot(lon, lat, color='red', linewidth=1.5, label='CALIPSO轨迹')
plt.title("CALIPSO Satellite Ground Track")
plt.legend(loc='lower left')
plt.tight_layout()
plt.show()
结果图:

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)