- 积分
- 55953
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2012-10-27 17:21 编辑
这个脚本程序示例了格点数据提取(Extract,从一个格点数据中提取更小区域的格点数据)、扩展(Extand,将格点数据扩大到更大的空间范围,扩大 部分用缺测值)、合并(Union,两个格点数据合并为一个格点数据,合并后的格点数据以第二个格点数据为准,但如果第二个格点数据中某些格点为缺测值则以一个格点数据为准,此操作要求两个格点数据的空间范围和格点数一致)。 需要更新为最新文件(见置顶帖子)。
提取数据:GridData.Extract(int sXIdx, int sYIdx, int xNum, int yNum) ,前两个参数是x、y方向起始位置,后两个参数是提取的x、y方向的格点数
扩展数据:GridData.Extend(int leftNum, int rightNum, int topNum, int bottomNum) ,四个参数分别是左右上下扩展的格点数。
以model.ctl数据为例,获取全球气压格点数据,用Extract提取左右两个子格点数据,将左右两个格点数据分布扩展(Extand)到全球范围,再将扩展后的两个格点数据合并(Union)成全球数据。
提取的左边格点数据:
提取的右边格点数据:
合并后的全球数据:
脚本代码如下:
- #--------------------------------------------------------
- # Author: Yaqiang Wang
- # Date: 2012-10-26
- # Purpose: Extract, extent and union grid data
- # Note: Sample
- #-----------------------------------------------------------
- import clr
- from System.Collections.Generic import *
- clr.AddReference("MeteoInfoC.dll")
- from MeteoInfoC import *
- from MeteoInfoC.Data import *
- from MeteoInfoC.Data.MeteoData import *
- #---- Set directories
- BaseDir = "C:\\Program Files (x86)\\MeteoInfo\"
- DataDir = BaseDir + "Sample\\GrADS\"
- #---- Extract grid data
- mydata = MeteoDataInfo()
- mydata.OpenGrADSData(DataDir + "model.ctl")
- tnum = mydata.GetTimeNumber()
- datagrid = mydata.GetGridData("PS")
- leftgrid = datagrid.Extract(0, 0, 36, 46)
- rightgrid = datagrid.Extract(35, 0, 37, 46)
- mipy.MeteoDataset.SetDrawType("shaded")
- leftlayer = mipy.MeteoDataset.Display(leftgrid)
- leftlayer.LayerName = "Left_Grid"
- rightlayer = mipy.MeteoDataset.Display(rightgrid)
- rightlayer.LayerName = "Right_Grid"
- mipy.MapDocument.ActiveMapFrame.UpdateLayerNode(leftlayer)
- mipy.MapDocument.ActiveMapFrame.UpdateLayerNode(rightlayer)
- mipy.MapDocument.ActiveMapFrame.MoveLayer(leftlayer, 0)
- mipy.MapDocument.ActiveMapFrame.MoveLayer(rightlayer, 0)
- #----Extend and Union grid data
- leftgrid.Extend(0, 36, 0, 0)
- rightgrid.Extend(35, 0, 0, 0)
- leftgrid.Union(rightgrid)
- unionlayer = mipy.MeteoDataset.Display(leftgrid)
- unionlayer.LayerName = "Union_Grid"
- mipy.MapDocument.ActiveMapFrame.UpdateLayerNode(unionlayer)
- mipy.MapDocument.ActiveMapFrame.MoveLayer(unionlayer, 0)
- print 'Finished!'
复制代码
|
|