MeteoInfo脚本示例:GrADS to netCDF】的更多相关文章

这里给出一个将GrADS数据文件转为netCDF数据文件的脚本示例程序,其它格式数据转netCDF可以参考: #----------------------------------------------------- # Author: Yaqiang Wang # Date: 2015-3-12 # Purpose: Convert CUACE grads data to netCDF (CUACE/Dust) # Note: Sample #------------------------…
FY3A卫星有AOD产品数据,HDF格式,这里示例用MeteoInfo脚本程序读取和显示该类数据. 脚本程序如下: #----------------------------------------------------- # Author: Yaqiang Wang # Date: 2015-3-18 # Purpose: Read FY3A AOD hdf5 data # Note: Sample #---------------------------------------------…
在MeteoInfoLab中增加了创建netCDF文件并写入数据的功能,这里利用合并多个netCDF文件为一个新的netCDF文件为例.1.创建一个可写入的netCDF文件对象(下面用ncfile表示),用addfile函数,第一个参数是文件名,第二次参数'c'表示创建新的netCDF文件.ncfile = addfile(outfn, 'c')2.添加维(Dimensions),用ncfile的adddim函数,两个参数分别是维名称和维长度.stn = 26564stdim = ncfile.…
示例数据:ftp://ftp.bom.gov.au/anon/sample/catalogue/Satellite/IDE00220.201507140300.nc 该数据的分辨率很高(22000*22000),如果全部读入一个数组需要很大的内存,可以在读入时设置step(比如4,以间隔4读取数据),或者限定更小的空间范围. 脚本程序: #Add data file fn = 'D:/Temp/nc/IDE00220.201507140300.nc' f = addfile(fn) #Get d…
这个脚本示例读取文本格式的闪电数据,读出每条闪电记录的经纬度和强度,在地图上绘制出每个闪电的位置,并用符号和颜色区分强度正负.数据格式如下:0 2009-06-06 00:01:16.6195722 纬度=35.0297  经度=114.8923  强度=23.4   陡度=9.1    误差=71.9   定位方式:四站算法1 2009-06-06 01:34:58.5911760 纬度=34.4243  经度=115.6057  强度=-1.3   陡度=-0.4   误差=0.0    定…
FY-3C全球火点HDF数据包含一个FIRES二维变量,第一维是火点数,第二维是一些属性,其中第3.4列分别是火点的纬度和经度.下面的脚本示例读出所有火点经纬度并绘图.脚本程序: #Add data file fn = 'D:/Temp/hdf/FY3C_VIRRX_GBAL_L2_GFR_MLT_GLL_20150811_POAD_1000M_MS.HDF' f = addfile(fn) #Get data variable v = f['FIRES'] #Get data array da…
示例读取HYSPLIT模式输出的气团轨迹数据文件,生成轨迹图层,并显示轨迹各节点的气压图.脚本程序: f = addfile_hytraj('D:/MyProgram/Distribution/java/MeteoInfo/MeteoInfo/sample/HYSPLIT/tdump') tlayer = f.trajlayer() stlayer = f.trajsplayer() axesm(position=[0.1,0.4,0.8,0.6]) mlayer = shaperead('D:…
站点数据绘制等值线需要首先将站点数据插值为格点数据,MeteoInfo中提供了反距离权法(IDW)和cressman两个方法,其中IDW方法可以有插值半径的选项.这里示例读取一个MICAPS第一类数据(地面全要素观测),获取6小时累积降水数据(Precipitation6h),然后用站点数据的griddata函数将站点数据插值为格点数据,再利用contourfm函数创建等值线填色图层(等值线间隔和颜色可以自定义).脚本程序(经纬度投影): #Set data folders basedir =…
Maskout通常有两种类型:Maskout图形和Maskout数据.这里是Maskout图形的示例.需要用shaperead读取地图数据形成图层作为Maskout图层(这里是中国的行政区域china.shp),然后用masklayer函数对数据图层进行屏蔽,第一个参数是用来Maskout的图层,第二次参数是一个图层列表(可以同时屏蔽多个图层). 脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') ps = f['PS'][0,(10,60),(60,140…
MODIS的气溶胶光学厚度(AOD)产品应用很广,数据可以在Giovanni上下载:http://disc.sci.gsfc.nasa.gov/giovanni/overview/index.html.有HDF, netCDF和文本格式,这里示例打开netCDF格式数据,提取AOD数据并绘图. 脚本程序如下: f = addfile('D:/Temp/nc/MOD08_D3.A2015121.051.2015122103938.pscs_000500931513.Optical_Depth_La…
AMSR-E(http://nsidc.org/data/amsre/index.html)数据中的Land3数据是HDF-EOS4格式,投影是Cylindrical_Equal_Area.这里示例读取数据并投影至等经纬度投影.脚本程序: #Add data file fn = 'AMSR_E_L3_DailyLand_V06_20091231.hdf' f = addfile(os.path.join('D:/Temp/hdf', fn)) #vname = 'D_Soil_Moisture'…
打开包含站点填图的站点数据文件(比如micaps 1)之后,用文件对象的smodeldata函数获取StationModel数据对象,然后用stationmodel函数绘制站点填图图层.脚本程序: #Set data folders basedir = 'D:/MyProgram/Distribution/java/MeteoInfo/MeteoInfo' datadir = os.path.join(basedir, 'sample/MICAPS') mapdir = os.path.join…
天气现象符号分布图实际就是散点图,可以用scatterm函数绘制,但之前需要创建天气符号图例,用weatherspec函数.如果只需要绘制某些天气现象(比如雾.霾),可以给出相应的天气符号序号列表(可以在网上查找).脚本程序: #Set data folders basedir = 'D:/MyProgram/Distribution/java/MeteoInfo/MeteoInfo' datadir = os.path.join(basedir, 'sample/MICAPS') mapdir…
绘制Stramline流线图的函数是streamline,需要两个变量(U/V分量或者风向/风速).脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') u = f['U'][0,[500],[10,60],[60,140]] v = f['V'][0,[500],[10,60],[60,140]] axesm() mlayer = shaperead('D:/Temp/map/country1.shp') geoshow(mlayer, edgecolor=…
对于全球数据来说,经度要么是-180 - 180,要么是0 - 360,都会存在边界数据不连续的问题.比如0 - 360的数据,怎么得到 -20 - 30度的连续格点数据就是个问题(跨越了数据的经度边界),在MeteoInfoLab中可以用DimArray或MIArray的join函数来将两个数组合并为一个,参数分别是另一个数组和合并的维的序号,比如下面例子中的二维数组(y, x),经度维是第二维(序号为1),也就是说两个数组沿着经度维合并.还需要给合并后的数组的经度维设置新的经度值.脚本程序:…
MeteoInfoLab的georead函数提供了读取shape文件.image文件(JPG.PNG等,需要有相应的地理定位文件)文件生成图层的功能(事实上shaperead也是同样的功能,不过函数名太过具体).对于Polygon图层可以设置其颜色透明度,可以用makecolors函数生成颜色列表,函数中设置参数alpha(255是不透明,0是完全透明).在contourfm函数中设置edgecolor参数可以绘制颜色区域的边框.脚本程序: f = addfile('D:/Temp/GrADS/…
MODIS卫星很多陆面数据都是Sinusoidal投影,数据被分为一个个10*10度(赤道地区)的瓦片(http://modis-land.gsfc.nasa.gov/MODLAND_grid.html),数据格式通常是HDF-EOS格式,作为EOS格式MeteoInfo可以自动读出数据的坐标信息(包括投影等).脚本程序: f = addfile('D:/Temp/Hdf/MOD10A1.A2010365.h27v05.005.2011002103013.hdf') vname = 'snow_…
需要温度和风场U/V分量格点数据,计算中主要用到cdiff函数,结果用GrADS验证一致.脚本程序: print 'Open data files...' f_air = addfile('D:/Temp/nc/air.2011.nc') f_uwnd = addfile('D:/Temp/nc/uwnd.2011.nc') f_vwnd = addfile('D:/Temp/nc/vwnd.2011.nc') print 'Read data array...' tidx = 173 # Ju…
利用Unidata netCDF Java库对远程文件的读取能力(OpenDAP, ADDE, THREDDS等),可以读取远程文件并绘图.脚本程序: fn = 'http://monsoondata.org:9090/dods/model' f = addfile(fn) v = f['ps'] ps = v[0,:,:] #Plot axesm() mlayer = shaperead('D:/Temp/map/country1.shp') geoshow(mlayer) layer = c…
用U/V分量数据计算涡度和散度,计算涡度的函数是hcurl,计算散度的函数是hdivg,参数都是U, V.脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') u = f['U'][0,0,:,:] v = f['V'][0,0,:,:] vort = hcurl(u, v) divg = hdivg(u, v) axesm() mlayer = shaperead('D:/Temp/map/country1.shp') geoshow(mlayer) #la…
AIRS Grid HDF数据是HDF4 EOS格式,数据地理坐标信息可以被MeteoInfo自动识别,脚本程序更为简单.需要注意的是读取数据时Y轴是反向的(卫星数据通常如此).脚本程序: #Add data file folder = 'D:/Temp/hdf/' fns = 'AIRS.2002.08.01.L3.RetStd_H031.v4.0.21.0.G06104133732.hdf' fn = folder + fns f = addfile(fn) vname = 'Tempera…
全球长时间序列中尺度气旋数据(http://cioss.coas.oregonstate.edu/eddies/)有netCDF格式,散点数据类型,只有一个很大的维Nobs = 2590938.尝试读取了部分经纬度和track数据,并绘制散度图.脚本程序: fn = 'D:/Temp/nc/tracks.20130125.nc' f = addfile(fn) n = 1000 lon = f['lon'][0:n] lat = f['lat'][0:n] track = f['track'][…
MeteoInfoLab中读取文本文件数据的函数是asciiread,获取文本文件行.列数的函数是numasciirow和numasciicol,和NCL中函数名一致,但都是小写字母.本例中的示例数据文件来自此帖中的数据flood.dat:http://bbs.06climate.com/forum.php?mod=viewthread&tid=29257&extra=page%3D1,该数据文件没有文件头(直接是数据),共三列,分别是经度.纬度和值.先获取文件的行数和列数,然后用asci…
添加南海脚图实际上就是增加一个地图坐标系(Axesm),在用axesm函数创建地图坐标系的时候可以指定position参数(即位置和大小),第1和第2个参数是坐标系的左下角x, y位置,后两个参数是坐标系的宽度和高度,单位都是Figure的归一化坐标(0 - 1).由于地图坐标系在Figure缩放时需要保持地图x, y坐标比例不变(地图不发生变形),坐标系具体绘制的位置会随着Figure缩放而变化,需要提前设置好Figure大小,再调整position参数.脚本程序: #Set data fol…
在用axesm函数创建地图坐标系的时候可以指定地图投影(设置projinfo参数),地图投影可以通过projinfo函数来创建,里面的参数依据proj4投影字符串,可以参考此网页:http://remotesensing.org/geotiff/proj_list.投影后的地图坐标系显示范围的设置可以用axism函数,参数是一个列表(list),列表里的4个元素分别是起始.结束经度和纬度.脚本程序: #Set data folders basedir = 'D:/MyProgram/Distri…
应用最广泛的的地图数据应该是shape格式,网络上有很多免费下载资源.MeteoInfoLab中读取shape文件的函数是shaperead,参数即文件名,返回数据包含图形和属性信息的图层对象.矢量图层按照图元类型通常分点.线.面三种,都可以通过geoshow函数加入到地图坐标系(Axesm)中.在geoshow函数中可以指定图层的显示的Symbol(颜色等),可以设置facecolor, edgecolor, size等,这种情况下图层的所有图元都会以同一个Symbol来显示.也可以利用图层的…
inpollygon函数是用来判断带坐标(x/y)的数据是否在某个或者一组多边形(Polygon)中,返回的结果中如果做多边形内则值为1,否则值为-1.下面一个例子演示了利用一个shape文件和inpolygon函数生成这种0.1数据.需要下载最新的MeteoInfo版本(1.2.6R1):http://yun.baidu.com/share/link?shareid=669776748&uk=510624351.生成一个格点数据(2维数组),可以用zeros函数:a = zeros((50,8…
LaTeX是排版常用的语法,科学计算软件中也常用它来写数学公式(比如MatLab, Matplotlib等),MeteoInfo通过调用JMathLaTeX库也可以实现这样的功能.LaTeX的语法介绍可以参考此网页:http://matplotlib.org/users/mathtext.html下面是两个例子: 脚本程序: def f(x, c): m1 = sin(2*pi*x) m2 = exp(-c*x) return m1 * m2 x = linspace(0, 4, 100) si…
绘制格点数据的散点图,用scaterm函数. 脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') ps = f['PS'][0,(10,60),(60,140)] axesm() mlayer = shaperead('D:/Temp/map/country1.shp') geoshow(mlayer, linecolor=(0,0,255)) layer = scatterm(ps) title('Pressure') colorbar(layer) sh…
读取风场U/V变量数据,可以从U/V计算出风速:speed = sqrt(u*u+v*v).quiverm函数用来绘制风场矢量图,参数中包括U/V变量,如果要绘制彩色风场还需要第三个变量,这里是风速speed,10是颜色的分级数,size=8指定了风场箭头的基准大小. 脚本程序: f = addfile('D:/Temp/GrADS/model.ctl') u = f['U'][0,[500],[10,60],[60,140]] v = f['V'][0,[500],[10,60],[60,14…