爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7657|回复: 11

绘制micaps 1类数据出现问题

[复制链接]

新浪微博达人勋

发表于 2011-7-8 11:14:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 rhythm9806 于 2011-7-8 11:16 编辑

我用版主给的script绘制累积雨量,用的数据时MICAPS 1类数据,但是出现问题;
我上传了几个我的资料文件,是国家局FTP上下的,好像和我平时用的稍微有点不一样
版主帮忙看看,问题在哪里
09022417.000 (375.35 KB, 下载次数: 7)

09022414.000

451.76 KB, 下载次数: 1, 下载积分: 金钱 -5

09022411.000

367.97 KB, 下载次数: 6, 下载积分: 金钱 -5

09022408.000

428.63 KB, 下载次数: 2, 下载积分: 金钱 -5

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-7-8 12:27:03 | 显示全部楼层
还不会用python,我out了...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-8 13:13:35 | 显示全部楼层
micaps3里可以画累积雨量
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-8 18:57:03 | 显示全部楼层
我从单位FTP上下的资料是可以用的,我试过,但是没有我要的时间段,所以从国家局下了,但是使用起来就有上面的错误
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-8 23:24:57 | 显示全部楼层
本帖最后由 MeteoInfo 于 2011-7-8 23:30 编辑

MeteoInfoC.dll中添加标注功能中有一个bug,下载附件并覆盖原来的MeteoInfoC.dll即可。

MeteoInfoC.dll (1.57 MB, 下载次数: 21)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-11 08:15:10 | 显示全部楼层
本帖最后由 rhythm9806 于 2011-7-11 08:16 编辑




还是有问题,运行错误信息 11.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-7-11 09:11:39 | 显示全部楼层
我这里运行没有问题。

你把程序都贴出来吧,我看看。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-11 09:25:35 | 显示全部楼层
# This Python file uses the following encoding: GB2312
#---- 引入类库
import clr
clr.AddReferenceByPartialName("System")
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
from System import *
from System.Windows.Forms import *
from System.Drawing import *
clr.AddReference("MeteoInfoC.dll")
from MeteoInfoC import *
from MeteoInfoC.Layout import *
from MeteoInfoC.Data import *

#---- 创建MIApp类的对象
myApp = MIApp()
#---- 添加图层
myApp.OpenLayer(".\\Map\\bou2_4p.shp")
#---- 设置图层渲染
myApp.SetLegendBreak("bou2_4p.shp",0,Color.Yellow,Color.Gray,1,True,False,True)
myApp.OpenLayer(".\\Map\\bou1_4l.shp")
myApp.SetLegendBreak("bou1_4l.shp",0,Color.Blue)
myApp.OpenLayer(".\\Map\\china.shp")
myApp.SetLayerVisible("china.shp", False)
myApp.OpenLayer(".\\Map\\res1_4m.shp")
myApp.SetLegendBreak("res1_4m.shp",0,5,Color.Red,Color.Black,True,True,True)
#---- 获取矢量图层对象,并设置标注
aLayer = myApp.GetVectorLayer("res1_4m.shp")
aLayer.LabelSet.FieldName = "NAME";
aLayer.LabelSet.LabelFont = Font("楷体", 10);
aLayer.LabelSet.Offset = 15;
aLayer.AddLabels();

#---- Lambert投影
myApp.ProjectLayers("+proj=lcc+lat_1=25+lat_2=47+lon_0=105")

#---- 按照经纬度范围缩放地图
myApp.ZoomLonLat(100,125,20,35)

#---- 设置屏蔽图层(只绘制中国境内图形)
myApp.SetMaskout("china.shp")
#---- 设置绘图类型为shaded
myApp.SetDrawType("shaded")
#---- 站点数据插值为格点数据的设置
myApp.SetInterpolation(60,140,-20,60,160,160,"IDW_Radius",1,1)
#---- 设置图例文件
myApp.SetLegendScheme(".\\Legend\\rain1.lgs")

#---- 设置DefalutLayoutMap(图层显示)
myApp.MapLayout.DefaultLayoutMap.DrawGridLine = False
myApp.MapLayout.DefaultLayoutMap.DrawNeatLine = False
myApp.MapLayout.DefaultLayoutMap.Left = 10
myApp.MapLayout.DefaultLayoutMap.Top = 10
myApp.MapLayout.DefaultLayoutMap.Width = 620
myApp.MapLayout.DefaultLayoutMap.Height = 450

#---- 设置DefaultIllustration(插图,这里是南海脚图)
#myApp.MapLayout.DefaultIllustration.Visible = True
#myApp.MapLayout.DefaultIllustration.Left = 40
#myApp.MapLayout.DefaultIllustration.Top = 350
#myApp.MapLayout.DefaultIllustration.Width = 85
#myApp.MapLayout.DefaultIllustration.Height = 109

#---- 设置DefaultTitle(图形标题)
myApp.MapLayout.DefaultTitle.SetFont("黑体", 12)
myApp.MapLayout.DefaultTitle.Top = 40
myApp.MapLayout.DefaultTitle.Left = 80

#---- 设置DefaultLegend(图例)
myApp.MapLayout.DefaultLegend.LegendStyle = LegendStyleEnum.Normal        
myApp.MapLayout.DefaultLegend.DrawNeatLine = False
myApp.MapLayout.DefaultLegend.Title = "降水量(毫米)"
myApp.MapLayout.DefaultLegend.BackColor = Color.White
myApp.MapLayout.DefaultLegend.Font = Font("Arial", 8)
myApp.MapLayout.DefaultLegend.Left = 575
myApp.MapLayout.DefaultLegend.Top = 250

#---- 设置起始结束时间
sTime = DateTime.Parse("2009-02-14 08:00")
eTime = DateTime.Parse("2009-03-08 20:00")
aTime = sTime.AddHours(-6)

stData = StationData()
i = 1
#---- 循环
while sTime <= eTime:
  myApp.RemoveDataLayers()
  inFile = sTime.ToString("yyMMddHH") + ".000"
  print inFile
  #---- 打开MICAPS数据文件
  myApp.OpenMICAPSData(".\\Sample\\MICAPS\\" + inFile)  
  #---- 获取累计降水站点数据
  if i == 1:
      stData = myApp.GetStationData("Precipitation6h")
  else:
      stData = stData + myApp.GetStationData("Precipitation6h")

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

#---- 绘制累计降水图层
myApp.Display(stData)
#---- 调整图层顺序(以避免压盖)
myApp.MoveLayerToTop("bou2_4p.shp")  
myApp.MoveLayerToTop("bou1_4l.shp")
myApp.MoveLayerToTop("res1_4m.shp")
#---- 设置标题名称
title = "            全国降水量实况图\n" + aTime.ToString("yyyy年MM月dd日HH时") + " - " + eTime.ToString("yyyy年MM月dd日HH时")
myApp.SetTitle(title)     
#---- 设置图例名称
myApp.MapLayout.DefaultLegend.Title = "降水量(毫米)"
#---- 绘制图形
myApp.MapLayout.PaintGraphics()
#---- 输出图形为文件
outFile = "Prec_" + sTime.ToString("yyyyMMddHH") + "-" + eTime.ToString("yyyyMMddHH") + ".png"
print outFile
myApp.SaveFigure("G:\\" + outFile)   

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

新浪微博达人勋

 楼主| 发表于 2011-7-11 09:25:58 | 显示全部楼层
就是你的脚本,修改了一下时间
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-7-11 09:26:56 | 显示全部楼层
本帖最后由 rhythm9806 于 2011-7-11 09:27 编辑

11.jpg 绘制每日的降水也出现问题,
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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