爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15781|回复: 24

按照给定的空间范围提取站点数据

[复制链接]

新浪微博达人勋

发表于 2011-7-20 11:37:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
这个script程序展示了如何通过给定经纬度范围来提取站点数据,并将站点数据保存为csv文件(该文件可以在MeteoInfo中使用)。

# This Python file uses the following encoding: GB2312
#---- 引入类库
import clr
clr.AddReferenceByPartialName("System")
from System import *
clr.AddReference("MeteoInfoC.dll")
from MeteoInfoC import *
from MeteoInfoC.Data import *

#---- 设置路径变量
BaseDir = "C:\\Program Files (x86)\\MeteoInfo\\"
DataDir = BaseDir + "Sample\\MICAPS\\"
OutDir = "E:\\temp\\"
#---- 创建MIApp类的对象
myApp = MIApp()

#---- 设置起始结束时间
sTime = DateTime.Parse("2010-10-14 14:00")
eTime = DateTime.Parse("2010-10-14 20:00")

#---- 循环
while sTime <= eTime:
  myApp.RemoveDataLayers()
  inFile = sTime.ToString("yyMMddHH") + ".000"
  print inFile
  #---- 打开MICAPS数据文件
  myApp.OpenMICAPSData(DataDir + inFile)
  #---- 降水
  #---- 获取站点数据
  stData = myApp.GetStationData("Precipitation6h")  
  #---- 根据经纬度范围提取数据(最小经度,最大经度,最小纬度,最大纬度)
  stData = stData.Extract(60,140,-20,60)
  #---- 保存站点数据
  stData.SaveAsCSVFile(OutDir + "Prec_" + sTime.ToString("yyyyMMddHH") + ".csv", "Precipitation")
  #---- 温度
  #---- 获取站点数据
  stData = myApp.GetStationData("Temperature")  
  #---- 根据经纬度范围提取数据(最小经度,最大经度,最小纬度,最大纬度)
  stData = stData.Extract(60,140,-20,60)
  #---- 保存站点数据
  stData.SaveAsCSVFile(OutDir + "Temp_" + sTime.ToString("yyyyMMddHH") + ".csv", "Temperature")

  #---- 时间加6小时
  sTime = sTime.AddHours(6)


密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-7-20 11:42:12 | 显示全部楼层
谢谢楼主提供哈,这个代码给定的经纬度是不是得是矩形的?有时候需要提取某个省或者区域的站点,如果可以用底图文件作为掩膜,来提取底图范围内的站点那就更强大了,不知道能不能实现啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-20 13:17:48 | 显示全部楼层

这个也是可以的,用StationData的Maskout方法来做。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-20 13:36:39 | 显示全部楼层
本帖最后由 MeteoInfo 于 2011-7-20 13:44 编辑

用多边形图层提取区域内的站点数据。对于格点数据也有类似的方法,区域外的格点值被赋为无效值,和GrADS的maskout函数类似,不过不需要格点的maskout数据,只需要一个多边形图层就可以了。这个例子中用中国多边形图层提取中国区域内的站点数据。

# This Python file uses the following encoding: GB2312
#---- 引入类库
import clr
clr.AddReferenceByPartialName("System")
clr.AddReferenceByPartialName("System.Windows.Forms")
from System import *
from System.Windows.Forms import *
clr.AddReference("MeteoInfoC.dll")
from MeteoInfoC import *
from MeteoInfoC.Data import *

#---- 设置路径变量
BaseDir = "C:\\Program Files (x86)\\MeteoInfo\\"
MapDir = BaseDir + "Map\\"
DataDir = BaseDir + "Sample\\MICAPS\\"
OutDir = "E:\\temp\\"
#---- 创建MIApp类的对象
myApp = MIApp()
myApp.OpenLayer(MapDir + "china.shp")
myApp.Zoom(70,140,10,60)
myApp.SetDrawType("station_point")

#---- 设置起始结束时间
sTime = DateTime.Parse("2010-10-14 20:00")
eTime = DateTime.Parse("2010-10-14 20:00")

#---- 循环
while sTime <= eTime:
  myApp.RemoveDataLayers()
  inFile = sTime.ToString("yyMMddHH") + ".000"
  print inFile
  #---- 打开MICAPS数据文件
  myApp.OpenMICAPSData(DataDir + inFile)
  #---- 降水
  #---- 获取站点数据
  stData = myApp.GetStationData("Precipitation6h")  
  #---- 根据多边形图层提取图层区域内的数据(MapView对象,图层名)
  stData = stData.Maskout(myApp.MapLayout.MapView, "china.shp")
  #---- 保存站点数据
  stData.SaveAsCSVFile(OutDir + "China_Prec_" + sTime.ToString("yyyyMMddHH") + ".csv", "Precipitation")  
  myApp.Display(stData)
  
  #---- 时间加6小时
  sTime = sTime.AddHours(6)

#---- 绘制图形
myApp.MapLayout.PaintGraphics()  
#---- 显示程序窗体
Application.Run(myApp)

Image00483.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-7-20 14:05:07 | 显示全部楼层
MeteoInfo 发表于 2011-7-20 13:36
用多边形图层提取区域内的站点数据。对于格点数据也有类似的方法,区域外的格点值被赋为无效值,和GrADS的m ...

太佩服你了!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-30 11:45:40 | 显示全部楼层
学习学习,太需要这要的经验贴了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-8 13:20:59 | 显示全部楼层
佩服,获取数据的好方法
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-11-1 14:06:11 | 显示全部楼层
学习了,佩服
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-2-26 22:47:57 | 显示全部楼层
脚本语言放在软件的哪个位置呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-2-27 08:22:56 | 显示全部楼层
kc121 发表于 2012-2-26 22:47
脚本语言放在软件的哪个位置呢?

脚本语言的使用可以看我博客里的具体内容:http://hi.baidu.com/meteoinfo/bl ... fo%20Script/index/2
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表