爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: liumiaomiao

[源程序] surfer脚本编程作图

[复制链接]

新浪微博达人勋

 楼主| 发表于 2020-5-22 22:09:14 | 显示全部楼层
xyangtian 发表于 2020-5-18 20:50
就是Z值的滤波方式吧,。

你好,请问griddata()中设置z值的滤波方式,这么写exclusionfilter:="z<5",是不是不对啊,你知道怎么写吗。例子里面也没有。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-5-26 10:14:37 | 显示全部楼层
xyangtian 发表于 2020-5-18 20:50
就是Z值的滤波方式吧,。

你好,不好意思,请教您一下:griddata()中设置z值滤波范围的参数我写了后,感觉没有作用,成图后还有空白,负值。你遇到过这种情况没?grid z limits ()这个 参数是不是不能在函数中设置阿。菜单中设置网格z的极限值好像更起作用。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-26 14:45:20 | 显示全部楼层
来苦点工分来苦点工分
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-30 15:26:10 | 显示全部楼层
liumiaomiao 发表于 2020-5-22 22:09
你好,请问griddata()中设置z值的滤波方式,这么写exclusionfilter:="z

用的什么编程语言
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-2 10:14:53 | 显示全部楼层
xyangtian 发表于 2020-5-30 15:26
用的什么编程语言

surfer自带的脚本编程

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-4 19:04:07 | 显示全部楼层
liumiaomiao 发表于 2020-6-2 10:14
surfer自带的脚本编程
  1. '生成等值线图
  2. Public Sub ContourMain()
  3.     Set SurferApp = CreateObject("Surfer.Application")
  4.     SurferApp.Visible = False
  5.     Set Wks = SurferApp.Documents.Open(baseFile)
  6.    
  7.     maxValue = Wks.Columns(2).Statistics().Maximum '获取第二列最大值
  8.     minValue = Wks.Columns(2).Statistics().Minimum
  9.     maxHeight = Wks.Columns(4).Statistics().Maximum
  10.     Wks.Close srfSaveChangesNo '不提示直接关闭
  11.             
  12.     '网格
  13.     SurferApp.GridData DataFile:=baseFile, xCol:=xCombo.Text, yCol:=yCombo.Text, zCol:=zCombo.Text, NumCols:=(maxValue - minValue) / xText.Text + 1, NumRows:=(maxHeight - yMinText.Text) / yText.Text + 1, xMin:=minValue, xMax:=maxValue, yMin:=yMinText.Text, yMax:=maxHeight, _
  14.     ExclusionFilter:=zFilterText.Text, Algorithm:=srfKriging, DupMethod:=srfDupFirst, ShowReport:=False, OutGrid:=baseName & ".grd"
  15.             
  16.     '滤波
  17.     Call SurferApp.GridFilter(baseName & ".grd", srfFilterGaussian, srfFltEdgeReplicate, srfFltBlankLeave, OutGrid:=baseName & ".grd")
  18.             
  19.     '转化为dat
  20.     'Call SurferApp.GridConvert(InGrid:=GridFile, OutGrid:=BaseName + ".dat")

  21.     '平滑
  22.     Call SurferApp.GridSplineSmooth(baseName & ".grd", nRow:=2, nCol:=2, Method:=srfSplineInsert, OutGrid:=baseName & ".grd")
  23.     '加载网格图
  24.     Set Plot = SurferApp.Documents.Add(srfDocPlot)
  25.     Set MapFrame = Plot.Shapes.AddContourMap(baseName & ".grd")
  26.    
  27.     '叠加图形
  28.     'Plot.Shapes.SelectAll
  29.     'Plot.Selection.OverlayMaps
  30.    
  31.     Set plotMape = Plot.Selection.Item(1)
  32.     Call plotMape.SetLimits(xMin:=minValue, xMax:=maxValue, yMin:=yMinText.Text, yMax:=maxHeight)
  33.     With plotMape
  34.         .xMapPerPU = scaleText.Text '设置比例
  35.         .yMapPerPU = scaleText.Text '设置比例
  36.     End With
  37.    
  38.     '填充网格图
  39.     Set ContourMap = MapFrame.Overlays(1)
  40.     ContourMap.FillContours = True
  41.     'ContourMap.ShowColorScale = True
  42.     ContourMap.SmoothContours = srfConSmoothHigh
  43.     ContourMap.Levels.LoadFile (path + "1111.lvl")
  44.    
  45.     Plot.SaveAs (baseName + ".srf")
  46.     SurferApp.Quit

  47. End Sub

  48. '加载地形
  49. Public Sub BlankMian()
  50.     Set SurferApp = CreateObject("Surfer.Application")
  51.     SurferApp.Visible = False
  52.     Set Wks = SurferApp.Documents.Open(baseFile + ".srf")
  53.    
  54.     '加载地形bln
  55.     blankFile = path & "地表" & "" & fileName & ".bln"
  56.     Set blankMap = Plot.Shapes.AddBaseMap(blankFile)
  57.     Set blankMapSet = blankMap.Overlays(1)
  58.     With blankMapSet
  59.         .Fill.Pattern = "Solid"
  60.         .Fill.ForeColor = srfColorWhite
  61.     End With
  62.    
  63.     '叠加图形
  64.     Plot.Shapes.SelectAll
  65.     Plot.Selection.OverlayMaps
  66.    
  67.     Set plotMape = Plot.Selection.Item(1)
  68.     Call plotMape.SetLimits(xMin:=minValue, xMax:=maxValue, yMin:=yMinText.Text, yMax:=maxHeight)
  69.     With plotMape
  70.         .xMapPerPU = scaleText.Text '设置比例
  71.         .yMapPerPU = scaleText.Text '设置比例
  72.     End With
  73.    
  74.     Plot.Save
  75.     SurferApp.Quit
  76. End Sub

  77. '加载底板
  78. Public Sub BaseMain()
  79.     Set SurferApp = CreateObject("Surfer.Application")
  80.     SurferApp.Visible = False
  81.     Set Wks = SurferApp.Documents.Open(baseFile + ".srf")
  82.    
  83.     '加载底板bln
  84.     baseMapFile = path & "底板" & "" & fileName & ".bln"
  85.     Set baseMape = Plot.Shapes.AddBaseMap(baseMapFile)
  86.    
  87.     Set baseMapSet = baseMape.Overlays(1)
  88.     baseMapSet.Line.Width = 0.02
  89.    
  90.     '叠加图形
  91.     Plot.Shapes.SelectAll
  92.     Plot.Selection.OverlayMaps
  93.    
  94.     Set plotMape = Plot.Selection.Item(1)
  95.     Call plotMape.SetLimits(xMin:=minValue, xMax:=maxValue, yMin:=yMinText.Text, yMax:=maxHeight)
  96.     With plotMape
  97.         .xMapPerPU = scaleText.Text '设置比例
  98.         .yMapPerPU = scaleText.Text '设置比例
  99.     End With
  100.    
  101.     Plot.Save
  102.     SurferApp.Quit
  103. End Sub
复制代码
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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