OMI(臭氧监测仪)测量二氧化氮(NO2)、臭氧(O3)等关键空气质量成分。我在这里下载的每日columnO3文件代表了对流层臭氧柱浓度的全球分布。
该文件的大小约为 90Mb。任何有兴趣的人都可以下载其中任何一个。
数据以 (15, 720, 1440) 的形式上传到这里
- 15 是候选场景的数量
- 1440 是 X 维度,经度 [-180:180] 从左到右
- 720 是 Y 维度,纬度 [-90:90] 从下到上
使用 h5py和matplotlib.basemap,这是我的尝试:
import h5py
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import sys
file = h5py.File("OMI-Aura_L2-OMNO2_2016m0529t1759-o63150_v003-2016m0531t023832.he5", 'r')
dataFields=file['HDFEOS']['GRIDS']['ColumnAmountNO2']['Data Fields']
SDS_NAME='ColumnAmountNO2'
data=dataFields[SDS_NAME]
map_label=data.attrs['Units'].decode()
fv=data.attrs['_FillValue']
mv=data.attrs['MissingValue']
offset=data.attrs['Offset']
scale=data.attrs['ScaleFactor']
lat=dataFields['Latitude'][:][0]
min_lat=np.min(lat)
max_lat=np.max(lat)
lon=dataFields['Longitude'][:][0]
min_lon=np.min(lon)
max_lon=np.max(lon)
dataArray=data[:][1]
dataArray[dataArray==fv]=np.nan
dataArray[dataArray==mv]=np.nan
dataArray = scale * (dataArray - offset)
fig = plt.figure()
data_mask = np.ma.masked_array(data[0], np.isnan(data[0]))
m = Basemap(projection='cyl', resolution='l',llcrnrlat=-90, urcrnrlat = 90,llcrnrlon=-180, urcrnrlon = 180)
m.drawcoastlines(linewidth=0.5)
m.drawparallels(np.arange(-90., 120., 30.), labels=[1, 0, 0, 0])
m.drawmeridians(np.arange(-180, 180., 45.), labels=[0, 0, 0, 1])
my_cmap = plt.cm.get_cmap('gist_stern_r')
my_cmap.set_under('w')
m.pcolormesh(lon, lat, data_mask,latlon=True, cmap=my_cmap)
cb = m.colorbar()
cb.set_label(map_label)
plt.autoscale()
plt.show()
如图所示:
使用Panoply,候选为 0,如图所示:
我的问题
如何设置候选场景代表每日的全球分布(候选场景是什么意思?是否对应轨道轨迹?)
我的代码有什么问题,没有显示正确的数字
我的目标
下图截自网络。这就是我的目标风格!
任何建议或教程指南将不胜感激!