東北大学外洋域新世代海面水温(http://www.ocean.caos.tohoku.ac.jp/~merge/sstbinary/actvalbm.cgi)(分解能1/20度)を読むモジュールである。
ファイル名としてはgzipされたファイルを指定でき、解凍する必要はない。
(ftpのURLも直接指定できるがネットワークの負荷を考えること。)
メインプログラムとして走らせた時は領域一部をmatplotlibでプロットする。
readNGSST.py
import numpy as np
import matplotlib.pyplot as plt
def readNGSST(dir,file):
"""
read Tohoku univ. New Generation Sea Surface Temp.
usage:
lon,lat,sst=readNGSST(dir,file)
input
dir working dir
file filename
gzipped file is fine.
URL also works
output
lon longitude
lat latitude
SST sst data (masked array)
"""
# read data
ds=np.DataSource(dir)
f=ds.open(file, 'r')
f.seek(200) # skip header
sst=np.frombuffer(f.read(),dtype="u1")
f.close()
# as masked array
sst=np.ma.masked_array(sst,mask=np.logical_or(sst==255, sst==0))
sst=sst.reshape(1000,1000)*0.15-3.
# grid
lon=116.+np.arange(1000)*0.05
lat=13.+np.arange(1000)*0.05
return lon,lat, sst
############################################
if __name__ == '__main__':
# example plot
#read data
filename="msst2009010112.raw.gz"
lon,lat,sst=readNGSST(dir=".",file=filename)
#grid salection
xrange=np.logical_and(lon>=130,lon<=145.)
yrange=np.logical_and(lat>=30,lat<=45.)
# plot
plt.figure()
plt.pcolor(lon[xrange],lat[yrange],(sst[yrange,:])[:,xrange])
plt.savefig("ngsst.png")
plt.show()
参考
書籍
Matplotlib for Python Developers: Build Remarkable Publication Quality Plots the Easy Way

0 件のコメント:
コメントを投稿