例子中的AIRS Swath HDF数据在Polar Stereographic(南极)投影中接近矩形,需要先从数据中读出经纬度及相关数据数组,利用surfacem函数绘制Swath数据(散点),在surfacem函数中经纬度数据会被投影到目的投影坐标系(在axesm函数中定义),并从2维散点数据生成surface数据(也就是格点数据)用所谓的surface插值方法。2维散点数据可以组成格网(非矩形格网),遍历目标格点数据的每个格点,该格点落在格网中哪个网格中,就将此网格的散点值赋给该格点。有些拗口,其实算法不是很复杂,和MatLab中的surfacem函数的功能类似。
脚本程序:
#Add data file folder = 'D:/Temp/hdf/' fns = 'AIRS.2002.12.31.001.L2.CC_H.v4.0.21.0.G06100185050.hdf' fn = folder + fns f = addfile(fn) lon_v = f['Longitude'] lat_v = f['Latitude'] lon = lon_v[:,:] lat = lat_v[:,:] vname = 'radiances' rad_v = f[vname] rad = rad_v[:,:,567] #Plot plot,proj = axesm(proj='stere', lat_0=-90, gridline=True, griddx=30, griddy=30) mlayer = shaperead('D:/Temp/map/country1.shp') geoshow(mlayer) levs = arange(40, 90, 1) #slayer = scatterm(lon, lat, rad, levs, edge=True) layer = surfacem(lon, lat, rad, levs) colorbar(layer, orientation='horizontal') title('{0} {1}'.format(fns, vname)) axism()