爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5581|回复: 6

文本格式站点数据绘制等值线图不成功求助!

[复制链接]

新浪微博达人勋

发表于 2011-9-8 00:17:18 | 显示全部楼层 |阅读模式

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

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

x
                看了论坛中关于《文本格式站点数据绘制等值线图》的帖子后,自己亲自实验了一下,结果不成功,求助原作者以及各位朋友!
     现在将我的脚本和数据贴出,请求帮忙
#---- 引入类库
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.ProjectLayers("+proj=lcc+lat_1=25+lat_2=47+lon_0=105")
#---- 按照经纬度范围缩放地图
myApp.ZoomLonLat(102,104,24,27)
#---- 站点数据插值为格点数据的设置
#IDW_Radius插值
myApp.SetInterpolation(60,140,-20,60,160,160,"IDW_Radius",1,1)
#---- 设置图例文件
myApp.SetLegendScheme(".\\Legend\\24hrain.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
#---- 设置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 = 480
myApp.MapLayout.DefaultLegend.Top = 150
#---- 打开latlon数据文件
#myApp.RemoveDataLayers()
inFile = "r2324.csv"
print inFile
myApp.OpenLonLatData("e:\\24\\data\\"+inFile)  
#---- 生成6小时降水量图层
stData = myApp.GetStationData("P")
myApp.Display(stData)
print "Display finished"  
#---- 设置图例名称
myApp.MapLayout.DefaultLegend.Title = "降水量(毫米)"
#---- 绘制图形
myApp.MapLayout.PaintGraphics()
#---- 输出图形为文件
#outFile = "Prec_" + sTime.ToString("yyyyMMddHH") + ".gif"
#print outFile
#myApp.SaveFigure("f:\\" + outFile)  
#---- 显示程序窗体(只是为了看效果,自动运行时不需要)
Application.Run(myApp)

r2324.csv

350 Bytes, 下载次数: 6, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2011-9-8 10:02:34 | 显示全部楼层
你要贴出错误提示才能判断是哪里的问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-9-8 10:54:25 | 显示全部楼层

这个问题我找到了答案 ,是因为用IDW_Radius插值时参数设置不对,就是myApp.SetInterpolation(60,140,-20,60,160,160,"IDW_Radius",1,1)  的参数设置,后来我插值后又发现一个问题,插值边界是个小的矩形,不能覆盖整个我要maskout的边界文件shp, 请问是这是怎么回事?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-8 11:07:21 | 显示全部楼层
kmdqlb 发表于 2011-9-8 10:54
这个问题我找到了答案 ,是因为用IDW_Radius插值时参数设置不对,就是myApp.SetInterpolation(60,140,-20 ...

你把插值边界的矩形设置大些就可以了。SetInterpolation前四个参数就控制边界的(最小经度、最大经度、最小纬度、最大纬度),第5和6个参数分别是经度和纬度方向的格点数。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-9-8 11:41:11 | 显示全部楼层
MeteoInfo 发表于 2011-9-8 11:07
你把插值边界的矩形设置大些就可以了。SetInterpolation前四个参数就控制边界的(最小经度、最大经度、最 ...

王老师,还有一个问题请教你 , 我用脚本输出图片文件时,为什么没有经纬度啊,在软件中生成时有经纬度?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-8 11:43:29 | 显示全部楼层
脚本里有这句,当然就不画经纬线了
myApp.MapLayout.DefaultLayoutMap.DrawGridLine = False
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-9-8 11:51:38 | 显示全部楼层
MeteoInfo 发表于 2011-9-8 11:43
脚本里有这句,当然就不画经纬线了
myApp.MapLayout.DefaultLayoutMap.DrawGridLine = False

谢谢了 王老师
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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