Correcting for Rainfall Iso Variance Using the Nugget Effect


Added error variance of 0.5, and micro variance of 0.5 for proper curve smoothing (code added is below).

 

Set components(1) = surferApp.NewVarioComponent(srfVarLinear)
Set components(2) = surferApp.NewVarioComponent(srfVarNugget, 0.5, 0.5)

 

Code used to grid data using multiple Variogram components

Sub Main

    Dim surferApp, COntourMap As Object
    Dim inputFile, Gridfile As String
    Dim outputPath As String

Dim dirPath As String

Set surferApp = CreateObject("Surfer.Application")

dirPath = "C:\Documents and Settings\Administrator\My Documents\research\FEMA Projects\Rainfall Reports\"
inputFile = dirPath + "StationCoordinatesModified.xls"
outputPath = dirPath + "Grid Files\KrigingNugget5-5\"
' Here we simply Grid COlumns 8 (1 hr ) To columns

Dim outGridFilename As String

Dim colDurations(11) As String
colDurations(1) = "1HR"
colDurations(2) = "2HR"
colDurations(3) = "6HR"
colDurations(4) = "12HR"
colDurations(5) = "24HR"
colDurations(6) = "48HR"
colDurations(7) = "72HR"
colDurations(8) = "4D"
colDurations(9) = "5D"

Dim sheets(9) As String
 sheets(1) = "Sheet=2 Year"
 sheets(2) = "Sheet=3 Year"
 sheets(3) = "Sheet=5 Year"
 sheets(4) = "Sheet=10 Year"
 sheets(5) = "Sheet=25 Year"
 sheets(6) = "Sheet=50 Year"
 sheets(7) = "Sheet=100 Year"
 sheets(8) = "Sheet=200 Year"

Dim ReturnPeriods(9) As String
 ReturnPeriods(1) = "2YR"
 ReturnPeriods(2) = "3YR"
 ReturnPeriods(3) = "5YR"
 ReturnPeriods(4) = "10YR"
 ReturnPeriods(5) = "25YR"
 ReturnPeriods(6) = "50YR"
 ReturnPeriods(7) = "100YR"
 ReturnPeriods(8) = "200YR"


' An output for each krig method will be produced
'SrfGridAlgorithm Values

'Value Description
'srfInverseDistance Inverse Distance To a Power
'srfKriging Kriging
'srfMinCurvature Minimum Curvature
'srfShepards Modified Shepard's Method
'srfNaturalNeighbor Natural Neighbor
'srfNearestNeighbor Nearest Neighbor
'srfRegression Polynomial Regression
'srfRadialBasis Radial Basis Functions
'srfTriangulation Triangulation With Linear Interpolation
'srfMovingAverage Moving Average
'srfDataMetrics Data Metrics
'srfLocalPolynomial Local Polynomial

' To open a specific worksheet inside a spreadsheet, we must open the file within the
' documents collection and set the active sheet.
Dim ReturnPeriod As String
Dim i As Integer
Dim j As Integer
Dim components(1 To 2) As Object

Set components(1) = surferApp.NewVarioComponent(srfVarLinear)
Set components(2) = surferApp.NewVarioComponent(srfVarNugget, 0.5, 0.5)

For j=1 To 8
 Set wksdoc1 = surferApp.Documents.Open(inputFile, Options:=sheets(j))
 ReturnPeriod = ReturnPeriods(j)

 For i=1 To 9
    surferApp.GridData DataFile:=inputFile, xcol:=6, ycol:=5, zcol:=i+7, Algorithm:=srfKriging, KrigVariogram:=components, DupMethod:=srfDupNone, ShowReport:=False, OutGrid:=outputPath+ReturnPeriod+colDurations(i)+".grd"
 Next i
 wksdoc1.Close(SaveChanges:=srfSaveChangesNo)
Next j

End Sub