爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5396|回复: 9

vb调用surfer11的问题

[复制链接]
发表于 2015-7-22 10:34:16 | 显示全部楼层 |阅读模式

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

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

x
这个是用surfer8写的,但是现在用11了,如何进行修改,请大神帮帮忙。
Set SurferApp = CreateObject("Surfer.Application") '创建surfer对象   --------提示出错
    SurferApp.Visible = False   'surfer软件不在前台显示,如改为ture就会看到sufer软件处理过程,不美观
   
   SurferApp.GridData DataFile:="D:\出图程序\温度、雨量\Rainfall_60min\datfile\温度.dat", xCol:=1, yCol:=2, zCol:=3, Algorithm:=2, DupMethod:=2, ShowReport:=False, OutGrid:=App.Path & "\差值后.grd", xMin:=105.589, xMax:=106.125, yMin:=28.95, yMax:=29.56, NumCols:=1500, NumRows:=1500
    'SurferApp.GridData DataFile:="D:\web\hrw\Rainfall_10min\datfile\雨量.dat", xCol:=1, yCol:=2, zCol:=3, Algorithm:=2, DupMethod:=2, ShowReport:=False, OutGrid:=App.Path & "\差值后.grd", xMin:=105.589, xMax:=106.125, yMin:=28.95, yMax:=29.56, NumCols:=1500, NumRows:=1500
    '是利用 VB 代码控制 Surfer 来绘制等值线,生成一个空白的绘图页。用Kriging(克里格)法将资料内插到网格点上,并定义网格的最大(小)经纬度,Datefile为包含路径的文件名,这里为雨量数据文件,Outgrid 为数据插之后的输出文件。
     SurferApp.GridBlank InGrid:=App.Path & "\差值后.grd", BlankFile:=App.Path & "\永川边界.bln", OutGrid:=App.Path & "\差值后.grd"
    '用.bln 文件白化等值线,去掉边界外的插值, 并重新保存,为后面绘制等值线做准备。
   
    Set Plot = SurferApp.Documents.Add(1)
    Set ContourMapFrame = Plot.Shapes.AddContourMap(App.Path & "\差值后.grd ")
   
    '生成一个空白的绘图页,并在空白绘图页上生成白化后的等值线图,并指定其文件名为ContourMapFrame。
    'Set ContourMapFrame = plot.Shapes.AddContourMap("D:\dat.grd") '生成一个等值线图
           Set ContourMap = ContourMapFrame.Overlays(1)
     ContourMap.Levels.LoadFile (App.Path & "\温度.lvl")
    '降水等级文件可根据实际情况调整,以绘出较为美观的图形。
   
   
     ContourMap.SmoothContours = 4
    ContourMap.ShowColorScale = True
      ContourMap.FillContours = True
    '载入等值线等级文件,并平滑等值线,设置显示色标,最后,填充等值线。
   
    ContourMapFrame.Axes(1).Visible = False    '设置是否显示坐标轴
    ContourMapFrame.Axes(3).Visible = False
    ContourMapFrame.Axes(2).Visible = False
    ContourMapFrame.Axes(4).Visible = False
   
    ContourMap.ShowColorScale = True   '显示色标
    ContourMap.ColorScale.FrameLine.Width = 0#
    ContourMap.ColorScale.Left = ContourMap.Width + ContourMap.Left - 0.9
    ContourMap.ColorScale.Width = 0.6
    ContourMap.ColorScale.Height = 2.1
    ContourMap.ColorScale.Top = ContourMap.Top - (ContourMap.Height - ContourMap.ColorScale.Height) / 1.1
    ContourMap.ColorScale.LabelFont.Size = 8
    '等值线数值标注的字体和大小
    ContourMap.LabelFont.Size = 5
   
   
   
   
   
   
   
    Set BaseMap = Plot.Shapes.AddBaseMap(ImportFileName:=App.Path & "\永川边界.bln")
    '给等值线图plot 加载边界数据。
    Set postmapframe = Plot.Shapes.AddPostMap(dataFileName:=App.Path & "\站点信息.txt", xCol:=1, yCol:=2, LabCol:=3)
   
   
    '添加张贴图区域自动站数据填图图层。其中站点信息.txt为自动站数据,第一行为经度,第二行为纬度,第三行为站点名称
    Set postmap1 = postmapframe.Overlays(1)
    '下面对张贴图的属性进行设置
    Set MkFormat = postmap1.Symbol
    With MkFormat
    .Size = 0.05
    .Index = 12
    End With
    '设置站点符号的大小和形状
    Set lbFont = postmap1.LabelFont
    With lbFont
     .Face = "宋体"
     .Size = 8
     End With
    '设置站点名称的字体和大小
   
   
    '接下来是将雨量加载到图上,我是重复上面叠加站点的方法
   
    Set BaseMap = Plot.Shapes.AddBaseMap(ImportFileName:=App.Path & "\永川边界.bln")
    '给等值线图plot 加载边界数据。
   
    Set postmapframe = Plot.Shapes.AddPostMap(dataFileName:="D:\出图程序\温度、雨量\Rainfall_60min\datfile\温度.dat", xCol:=1, yCol:=2, LabCol:=3)
   
    '添加张贴图区域自动站数据填图图层。其中站点信息.txt为自动站数据,第一行为经度,第二行为纬度,第三行为雨量
    Set postmap1 = postmapframe.Overlays(1)
    '下面对张贴图的属性进行设置
    Set MkFormat = postmap1.Symbol
    With MkFormat
    .Size = 0.000000001
    .Index = 0
    End With
    '设置站点符号的大小和形状
    Set lbFont = postmap1.LabelFont
    With lbFont
     .Face = "宋体"
     .Size = 7
     End With
    '设置雨量称的字体和大小
    Set adtext = Plot.Shapes.AddText(X:=5.6, y:=3.2, Text:="单位:摄氏度") 'x、y是坐标
     With adtext.Font
    .Face = "宋体"
    Size = 5
     End With
' Set adtext = Plot.Shapes.AddText(X:=1.5, y:=8.3, Text:="永川区" & IntervalValue & "分钟温度实况图")  'x、y是坐标
Set adtext = Plot.Shapes.AddText(X:=1.5, y:=8.3, Text:="永川区自动站小时温度实况图")  'x、y是坐标
With adtext.Font
.Face = "宋体"
Size = 5
    '在图形的空白处加入标注
   
    End With
   
   
'显示时间
  'Set adtext = Plot.Shapes.AddText(X:=1.5, y:=8.15, Text:=Format(DateAdd("n", -IntervalValue, Now), "yyyy-MM-dd HH:m0") & Format(Now, "-HH:m0"))  x、y是坐标
     'Set adtext = Plot.Shapes.AddText(X:=1.5, y:=8.15, Text:=Mid(Format(DateAdd("n", -IntervalValue, Now), "yyyy-MM-dd HH:mm"), 1, 15) & "0" & Mid(Format(Now, "-HH:mm"), 1, 15))
'Set adtext = Plot.Shapes.AddText(X:=1.8, y:=8.15, Text:=Mid(Format(DateAdd("n", -IntervalValue, Now), "yyyy-MM-dd HH"), 1, 15) & ":00")
Set adtext = Plot.Shapes.AddText(X:=1.8, y:=8.15, Text:=Format(Now(), "yyyy-MM-dd hh" & ":00"))
With adtext.Font
    .Face = "宋体"
    Size = 5
End With
   
    Plot.Shapes.SelectAll '选中所有
    Plot.Selection.OverlayMaps '合并上面所有图层图形
     Plot.Export fileName:=App.Path & "\温度图.gif", Options:="Width=600,Height=800"
     Plot.Close
     SurferApp.Quit
    '绘图已完成,释放Surfer模块
    Form1.Image1.Picture = LoadPicture(App.Path & "\温度图.gif")
    '输出图形文件,退出Surfer。其中,data.gif为导出的gif图形文件名,Width、Height 分别为导出位图的宽度和高度(单位为像素)。
密码修改失败请联系微信:mofangbao
发表于 2015-9-28 20:38:40 | 显示全部楼层
非常好的资源,感谢楼主分享!
密码修改失败请联系微信:mofangbao
发表于 2016-1-10 21:30:22 | 显示全部楼层
学习了,留个爪
密码修改失败请联系微信:mofangbao
发表于 2016-3-18 10:51:02 | 显示全部楼层
谢谢
╭︿︿︿╮
{/ o  o /}  
( (oo) )   
  ︶︶︶
密码修改失败请联系微信:mofangbao
发表于 2016-3-18 11:10:51 | 显示全部楼层
谢谢^(* ̄(oo) ̄)^
密码修改失败请联系微信:mofangbao
发表于 2016-4-9 10:28:39 | 显示全部楼层
先研究下,受教了。
密码修改失败请联系微信:mofangbao
发表于 2016-5-19 13:24:47 | 显示全部楼层
看起來很有料
密码修改失败请联系微信:mofangbao
发表于 2016-6-7 16:43:58 | 显示全部楼层
改下引用不行吗
密码修改失败请联系微信:mofangbao
发表于 2017-8-11 17:45:21 | 显示全部楼层
发现surfer11有个问题,VB 找不到surfer11 COM组件引用
密码修改失败请联系微信:mofangbao
发表于 2017-8-18 08:54:37 | 显示全部楼层
建议重新安装Surfer!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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