JAXA EORC提供のMODIS SSTをプロットするスクリプトを作成した。
データのバイナリはEORCに提供していただいた。
下の例ではは2010年8月2日の領域6のデータから紀伊半島付近をプロットしている。 A2GL11008020431OD1_OSTAQ_01000_01000_sst_06
ファイルのフォーマットの情報はここ。
import numpy as np def read_MODIS_EORC(file,lon1,lon2,lat1,lat2): """ read MODIS_SST from EORC usage: lon,lat,sst=read_MODIS_EORC(file,lon1,lon2,lat1,lat2) input file filename lon1,lon2 Western,East bounday lat1,lat2 South,West bounday output lon longitude lat latitude SST sst data (masked array) in C """ # open file f=open(file, 'r') # read header pixel=f.read(6); print "pixel=",pixel line=f.read(6); print "line=",line nwlon=f.read(8); print "NW lon.=",nwlon nwlat=f.read(8); print "NW lat.=",nwlat res=f.read(8); print "resolution=",res slope=f.read(9); print "slope=",slope offset=f.read(9); print "ofset=",offset dummy=f.read(1) parameter=f.read(8); print "parameter name=",parameter dummy=f.read(1) filename=f.read(45); print "file name=",filename f.close() # read data f=open(file,'r') f.seek(int(pixel)*2) #skip header data=np.fromfile(f,dtype=">u2") data=data.reshape((int(line),int(pixel))) msk=np.logical_or(data==0,data>=65534) # 0 cloud, 65534 out of obs., 65535 land data=np.ma.masked_array(data[::-1],mask=msk[::-1,:]) data=data*float(slope)+float(offset)-273.15 # to degree C f.close() # grid lon=float(nwlon)+np.arange(int(pixel))*float(res) lat=float(nwlat)-np.arange(int(line))*float(res) lat=lat[::-1] # selection xrange=np.logical_and(lon>=lon1,lon<=lon2) yrange=np.logical_and(lat>=lat1,lat<=lat2) sst=(data[yrange,:])[:,xrange] return lon[xrange],lat[yrange], sst ############################################ if __name__ == '__main__': import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap # example plot #read data filename="A2GL11008020431OD1_OSTAQ_01000_01000_sst_06" lon1=135. lon2=138. lat1=32. lat2=35. lon,lat,sst=read_MODIS_EORC(filename,lon1,lon2,lat1,lat2) #plot tmax=int(sst.max()) tmin=int(sst.min()) fig=plt.figure() ax = fig.add_axes([0.1,0.1,0.8,0.8]) map = Basemap(projection='merc',llcrnrlat=lat1,urcrnrlat=lat2,\ llcrnrlon=lon1,urcrnrlon=lon2,resolution='i') lons,lats=np.meshgrid(lon[:],lat[:]) x,y=map(lons,lats) map.drawcoastlines() map.drawmapboundary() map.pcolor(x,y,sst,vmin=tmin,vmax=tmax) # colorbar pos = ax.get_position() l, b, w, h = pos.bounds cax = plt.axes([l+w+0.02, b, 0.03, h]) # setup colorbar axes. plt.colorbar(cax=cax) # draw colorbar plt.savefig("MODIS_EORC_SST.png") plt.show()
謝辞
ここで用いたSSTバイナリは宇宙航空研究開発機構(JAXA)地球観測研究センター(EORC)から提供されたものである。ここに感謝する。
関連ポスト
MODIS aqua Global Level 3 Mapped Mid-IR SST (4km)
http://oceansciencehack.blogspot.com/2010/09/modis-aqua-global-level-3-mapped-mid-ir.html
参考
MODIS EORC SST FAQ
http://kuroshio.eorc.jaxa.jp/ADEOS/mod_nrt_new/html/05_faq.html
JAXA MODISページ
http://www.eorc.jaxa.jp/hatoyama/satellite/sendata/modis_j.html
MODIS wikipedia
http://ja.wikipedia.org/wiki/MODIS
0 件のコメント:
コメントを投稿