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. To do so, 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: GridContourExportLoop.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 User-defined variables section with your own files and preferences. - Click Script | Run to run the script.
'========================== 'GridContourExportLoop.bas '========================== ' This script loops through data files in a directory, 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 As Object Set SurferApp = CreateObject("Surfer.Application") SurferApp.Visible = True '================================================================ 'USER-DEFINED VARIABLES '================================================================ 'Files file_extension = "dat" 'extension of the data files in the directory file_directory = "c:\program files\golden software\surfer 16\samples\" 'directory containing all of the data files export_format = "gif" 'extension of the output image file '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 '================================================================ 'If you didn't include a \ at the end of the file_directory, this line adds it If Len(file_directory)-InStrRev(file_directory,"\") <> 0 Then file_directory = file_directory + "\" 'This sets the file name equal to any DAT files in the directory data_file = Dir( file_directory + "*." + file_extension) 'Loops through all of the data files in the directory While data_file <> "" 'Creates a plot window Set Plot = SurferApp.Documents.Add 'Defines the name of the output grid file as the data file name with a GRD extension grid_file = file_directory + Left(data_file, Len(data_file)-(Len(data_file)-InStrRev(data_file,".")+1) ) + ".grd" Debug.Print grid_file 'Grids the data SurferApp.GridData3 (DataFile:=file_directory+data_file, Algorithm:= srfKriging, NumRows:=numrows, _ NumCols:=numcols, ShowReport:=False, OutGrid:=grid_file, xCol:=x, yCol:=y, zCol:=z) 'Creates a contour map Set MapFrame = Plot.Shapes.AddContourMap(GridFileName:=grid_file) Set ContourLayer = MapFrame.Overlays(1) 'Fill 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 = file_directory + Left(data_file, Len(data_file)-(Len(data_file)-InStrRev(data_file,".")+1) ) + "." + export_format 'Exports to a GIF Plot.Export2(FileName:=export_file, FilterID:=export_format) 'Go to the next DAT file data_file = Dir() Wend 'Closes Surfer SurferApp.Quit End Sub
Related Articles:
Updated November 9, 2018
Comments
0 comments
Please sign in to leave a comment.