Surfer does not currently have the ability to create a time-animated model, but there is an easy way to emulate this end-result via a script. If you have data with one x column, one y column, and multiple z columns, run the script below and then upload all of the output GIF files to an animated GIF creator. Many of these are available online for free.
To run this script:
- Copy the script below, or download the attached BAS file: GridZCols_ExportGIF_Loop.bas.
- In a Windows Explorer window, navigate to C:\Program Files\Golden Software\Surfer.
- Double click on Scripter.exe to launch Scripter.
- Press Ctrl+A to select all of the existing lines then press DELETE.
- If you copied this script, press Ctrl+V to paste it into Scripter. If you downloaded it, click File | Open, select the BAS file from your downloads directory, and click Open.
- Update the values in the User-Defined Variables section near the top of the script.
- Click Script | Run to run the script.
'========================== 'GridZCols_ExportGIF_Loop.bas '========================== ' This script loops through z columns in a single data file, gridding each one ' and creating a contour map from the grid, then exporting the grid as a GIF ' to be animated by a third-party program '========================== Sub Main Debug.Clear 'Initializes Surfer Dim SurferApp, Plot, MapFrame, ContourLayer, Wks, WksRange As Object Set SurferApp = CreateObject("Surfer.Application") SurferApp.Visible = True '================================================================ ' USER-DEFINED VARIABLES '================================================================ 'Files data_dir = "C:\program files\golden software\surfer 16\samples\" 'directory where the data file is located data_file = "Sample1.dat" 'data file name grid_dir = "C:\users\leslie-vm\desktop\" 'directory where grids will be saved gif_dir = "C:\users\leslie-vm\desktop\" 'directory where gifs will be saved 'Grid numrows = 200 'number of rows in the grid file numcols = 200 'number of columns in the grid file x = 1 'x column from the data file y = 2 'y column from the data file z = 3 'z column from the data file 'Colormap colormap_min = 40 'minimum data value for the colormap colormap_max = 100 'maximum data value for the colormap grad = "Rainbow" 'color gradient preset for the colormap '================================================================ 'Opens the data file in Surfer's worksheet and sets the worksheet range to row 1 Set Wks = SurferApp.Documents.Open(data_dir+data_file) Set WksRange = Wks.Rows(1, 1) 'Loops through all of the z columns in the data file 'This assumes columns A and B are x and y, and columns C through the end of the file are z's For i=3 To WksRange.ColumnCount 'Creates a plot window Set Plot = SurferApp.Documents.Add 'Defines output grid file directory & name grid_file = grid_dir + Left(data_file, Len(data_file)-(Len(data_file)-InStrRev(data_file,".")+1) ) + "_zcol"+Str(i)+".grd" 'Grids the data file SurferApp.GridData2(DataFile:= data_dir + data_file, xCol:=1, yCol:=2, zCol:=i, Algorithm:=srfKriging, ShowReport:=False, OutGrid:=grid_file, OutFmt:=srfGridFmtS7) Debug.Print "zCol = "+Str(i) 'Creates a contour map Set MapFrame = Plot.Shapes.AddContourMap(GridFileName:=grid_file) Set ContourLayer = MapFrame.Overlays(1) 'Fills contours ContourLayer.FillContours = True 'Assigns a preset to the colormap ContourLayer.FillForegroundColorMap.LoadPreset(grad) 'Sets colormap data limits so all exports use the same color scale ContourLayer.FillForegroundColorMap.SetDataLimits (DataMin:=colormap_min, DataMax:=colormap_max) 'Defines the name of the output GIF file as the data file name with a GIF extension export_file = gif_dir + Left(data_file, Len(data_file)-(Len(data_file)-InStrRev(data_file,".")+1) ) + "_zcol"+Str(i)+ ".gif" 'Exports to a GIF Plot.Export2(FileName:=export_file, FilterID:=gif) Next i 'Closes Surfer SurferApp.Quit End Sub
Updated November 9, 2018
Comments
0 comments
Please sign in to leave a comment.