If I have surfaces that look like this with lots of peaks and troughs, is there an easy way to create a smooth surface, even if it doesn’t necessarily try to “honor” every point, more like a least squares fit?
All of our estimation methods in krig_3d_geology honor your data, as best they can subject to your specified grid resolution. The simplest way to get a smoother “apparent” surface is to coarsen your grid resolution. However this method has some potential pitfalls, since the value computed at any give node will always approach the value nearest to that node. This means that if one of your spike values (you can see that type of noise above) land very close to one of your coarse grid nodes, you can still get a spike in your coarse surface.
However, there is an absolutely true way to smooth your surface regardless of grid resolution that is direct contradiction to my statement above (All of our estimation methods in krig_3d_geology honor your data).
If you use the Advanced variography options in krig_3d_geology and set a non-zero nugget term, you can smooth your noisy data!
I don’t have the customer’s dataset shown above, so I used one of our Sample Project datasets:
This application has a DEM top surface, and a GMF file for the 4 additional stratigraphic surfaces. After loading the app, delete these 6 modules:
and after adding geologic_surfaces, change the Z Scale to 3.0
As you can see, the uppermost of our 4 surfaces is rather noisy (actually just accurately following this stratigraphic horizon, but good enough for this lesson!). Right now we’re using Natural Neighbors with Gradients, which tends to give us the smoothest surface of all of our Estimation Methods that honors our data, but what if you wanted something much smoother?
If you switch to Kriging, but don’t change anything else, you’d get:
This is different, but not necessarily smoother (right)? So let’s switch to Advance Variography and click on the Display and Edit Variogram button.
To smooth our surface, we need to let the kriging DIS-honor our data. The parameter that does that is the Nugget term. For over 20 of our 29 years, we never let you set this parameter to a non-zero value. Especially when dealing with environmental data (or surface data), it was our contention that the data was sacrosanct and that it should be honored. For most sites, we still feel this is true.
When the nugget term is set to zero and you use the expert system’s Defaults, they will often seem to do a poor job of fitting the variogram as shown below:
First, you have to remember that the variogram fit is a constrained best-fit and second, you’re fitting the squares of the differences between your values. When you choose a nugget term, you won’t be choosing a potential surface variation value in actual units (feet or meters), but rather the square of that value. The nugget is a potential variance as you approach one of your data points, not a forced error.
So, I will admit to having tried many different sets of values before converging on the selections below. I even tried some Gaussian options that seemed to “fit” better, but that gave bizarre results. So I will leave to with two points of wisdom:
- Always give more “weight” to the end-result than the apparent goodness of variogram-fit!
- Always check the kriging estimation results in the Output Log to make sure you actually got the parameters that you think you selected!
Here is the Output Log (remember you need to expand the >, where it says “krig_3d_geology: Estimated data from […..]”
Here is our resultant smoothed surface. It looks pretty amazing!