MeteoInfoLab脚本示例:合并数组

对于全球数据来说,经度要么是-180 - 180,要么是0 - 360,都会存在边界数据不连续的问题。比如0 - 360的数据,怎么得到 -20 - 30度的连续格点数据就是个问题(跨越了数据的经度边界),在MeteoInfoLab中可以用DimArray或MIArray的join函数来将两个数组合并为一个,参数分别是另一个数组和合并的维的序号,比如下面例子中的二维数组(y, x),经度维是第二维(序号为1),也就是说两个数组沿着经度维合并。还需要给合并后的数组的经度维设置新的经度值。

脚本程序:

f = addfile(‘D:/Temp/GrADS/model.ctl‘)
psv = f[‘PS‘]
ps = psv[0,[10,50],[340,360]]
ps1 = psv[0,[10,50],[0,30]]
ps = ps.join(ps1, 1)
n = ps.dimlen(1)
ps.setdimvalue(1, linspace(-20,30,n))
axesm()
mlayer = shaperead(‘D:/Temp/map/country1.shp‘)
geoshow(mlayer, edgecolor=(0,0,255))
layer = contourfm(ps, 20)
title(‘Pressure‘)
colorbar(layer, aspect=12)
#savefig(‘D:/Temp/test/map_test.png‘, 600, 400)

时间: 2024-08-02 11:01:52

MeteoInfoLab脚本示例:合并数组的相关文章

MeteoInfoLab脚本示例:计算垂直螺旋度

尝试编写MeteoInfoLab脚本计算垂直螺旋度,结果未经验证. 脚本程序: print 'Open data files...' f_uwnd = addfile('D:/Temp/nc/uwnd.2011.nc') f_vwnd = addfile('D:/Temp/nc/vwnd.2011.nc') f_omega = addfile('D:/Temp/nc/omega.2011.nc') print 'Calculate vertical helicity...' tidx = 173

MeteoInfoLab脚本示例:FY-3C全球火点HDF数据

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 d

MeteoInfoLab脚本示例:创建netCDF文件(合并文件)

在MeteoInfoLab中增加了创建netCDF文件并写入数据的功能,这里利用合并多个netCDF文件为一个新的netCDF文件为例. 1.创建一个可写入的netCDF文件对象(下面用ncfile表示),用addfile函数,第一个参数是文件名,第二次参数'c'表示创建新的netCDF文件.ncfile = addfile(outfn, 'c') 2.添加维(Dimensions),用ncfile的adddim函数,两个参数分别是维名称和维长度.stn = 26564stdim = ncfil

MeteoInfoLab脚本示例:AIRS Swath HDF数据

例子中的AIRS Swath HDF数据在Polar Stereographic(南极)投影中接近矩形,需要先从数据中读出经纬度及相关数据数组,利用surfacem函数绘制Swath数据(散点),在surfacem函数中经纬度数据会被投影到目的投影坐标系(在axesm函数中定义),并从2维散点数据生成surface数据(也就是格点数据)用所谓的surface插值方法.2维散点数据可以组成格网(非矩形格网),遍历目标格点数据的每个格点,该格点落在格网中哪个网格中,就将此网格的散点值赋给该格点.有些

MeteoInfoLab脚本示例:计算水平螺旋度

尝试了用MeteoInfoLab编写计算水平螺旋度的脚本,结果未经验证. 脚本程序: print 'Open data files...' f_uwnd = addfile('D:/Temp/nc/uwnd.2011.nc') f_vwnd = addfile('D:/Temp/nc/vwnd.2011.nc') print 'Calculate average wind field from 850 to 600 hpa...' tidx = 173 # Jun 23, 2011 t = f_

MeteoInfoLab脚本示例:TRMM 2A12 HDF数据

TRMM 2A12 HDF数据是卫星观测的SWATH数据(轨道数据),比格点数据处理起来要麻烦一些.数据的经纬度保存在geolocation变量中,需要先将经纬度数据读出来(均为2维数组),然后读取云水含量数据(cldWater).虽然都是2维数组,但并不是格点数据,相当于2维的散点数据,点数相当多(3019*208)如果用散点图来绘制的话会非常的慢,需要将其插值为格点数据.插值方法建议选择nearest,该方法速度最快.插值后的格点数据用imshowm函数显示为图像就很快了. 脚本程序: #A

MeteoInfoLab脚本示例:AMSR-E卫星数据投影

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

MeteoInfoLab脚本示例:多Y轴图

数据范围相差比较大的数据序列进行对比的时候多Y轴图就很重要了.MeteoInfoLab中提供了一个twinx函数来根据已有的坐标系(Axes)生成一个新的Axes,这个命令会使得已有的Axes不绘制右边的Y轴,而新生成的Axes只绘制右边的Y轴.yaxis函数可以对某个Axes的Y轴进行相应的设置,第一个参数是某个Axes的对象,可以设置Y轴的颜色(color)和偏移(shift),对于超过2个Y轴的图形来说第3个Y轴就必须设置偏移以避免压盖. 双Y轴图: 多Y轴图: 脚本程序: ax1 = a

MeteoInfoLab脚本示例:线性拟合

MeteoInfoLab提供一个线性拟合函数linregress,参数是参与拟合的两个数据序列,返回拟合的斜率.截距和相关系数.有了上述拟合参数可以用polyval函数生成拟合数据(直线).然后可以将数据.拟合线.公式等绘图. 脚本程序: fn = os.path.join('D:/KeyData/PMMUL/data/54500_PMMUL_DA.csv') if os.path.exists(fn): print fn tdata = readtable(fn, delimiter=',',