Spline - exact interpolation?

3168
9
10-26-2011 12:50 PM
StefanHaglund1
Esri Contributor
Hi folks,

I have to create a surface from points where the value in the surface at the location of each point is exactly the same as the z-value in the point.

To me, it seems that the Spline interpolator (from Spatial Analyst) should do exactly this. Reading from the help it says:
�??The Spline tool uses an interpolation method that estimates values using a mathematical function that minimizes overall surface curvature, resulting in a smooth surface that passes exactly through the input points.�?�


To test if it really worked the way I expected, I used the Extract Values to points tool without the option to interpolate to draw the values from the pixels in the same location as my points. Looking at the resulting table, there is a difference of up to 20 percent in the values from my original points and the raster.

I found this thread in the Geostats forum http://forums.arcgis.com/threads/29053-Spline-not-working-as-Exact-interpolator?highlight=spline, but it doesn't answer the question either.

Can anyone give an explanation for why this is happening or perhaps a way to achieve the goal? Is there a setting in the Spline tool I am missing perhaps?

Thanks,
Nooski
0 Kudos
9 Replies
SteveLynch
Esri Regular Contributor
Are your input points located at the cell centers of your output raster?
The cell center is where the prediction is being made.

Steve
0 Kudos
MichaelStead
Occasional Contributor III
You have chosen spline because you know something about the behaviour of the parameter you are modelling that has prompted you to do so? Or you have seen in literature where someone else has already compared alternatives?

Could you just stick to a TIN or a terrain as this would just be straight line interpolated values. You could always convert this to raster if you need an input for a specific tool.
0 Kudos
StefanHaglund1
Esri Contributor
Michael,

The resulting surface needs to be modeled like this and also needs to be a raster. I thought about starting with a TIN but then I�??d need to convert it to raster which involves an interpolation anyway.

Steve,
No, my input points have no distinct pattern to them so the pixels created are not centered below the points.

When you say �??The cell center is where the prediction is being made.�?�, to my understanding that means that the interpolator uses the point (which might be located at the edge of a pixel) to read the value, draws a curve to fit through the point and assigns the pixel the value that is represented by the curve at the center of the pixel? See my poor attempt at art-work in the attached image.

Is this a correct understanding?

And most importantly for this problem, is there any way to let the pixel get the exact value of the input point, in the image 123?

Also, I missed to link to the thread in the GA forum, here it is: http://forums.arcgis.com/threads/29053-Spline-not-working-as-Exact-interpolator?p=144981#post144981

Thanks guys, I am really grateful for any help you can give here!
0 Kudos
SteveLynch
Esri Regular Contributor
Yes

- Think of the output raster as a point feature class (points are at the cell centers)
- input points and equation -  used to make predictions at these "rasterized" points
- each output raster cell gets its value from the prediction made at the cell center location

Steve
0 Kudos
StefanHaglund1
Esri Contributor
Thanks Steve, now I understand how it works.

The question remains if there is a way to create a surface where the pixel "containing" the input point gets the exact value from the point. From what you have said it doesn't seem so...
0 Kudos
SteveLynch
Esri Regular Contributor
Use Point To Raster, but then only the areas around points will be converted, or make the cell size very very small, but this will not be practical, or shift the input locations.

Why do the values have to be the same as the interpolated cell values?


Steve
0 Kudos
StefanHaglund1
Esri Contributor
Steve,

Point to raster is worth a try, in combination with other tools. I do need a surface that covers the entire area.

Why do the values have to be the same as the interpolated cell values?


Well, it is a requirement of the project that's non negotiable:) . I also can't shift the position of the input locations.

It seems like some combination of methods/tools might be needed. Basically I start with XYZ points and need to arrive at a surface, but what I do in between doesn't matter as long as the exact Z is kept in the pixels where the input points are.
0 Kudos
EricRice
Esri Regular Contributor
Greetings,

If it doesn't matter how you arrive at the result - here is a workflow.

1. Convert points to raster.
2. Interpolate a surface from  the points. Snap the result to raster from step 1. (same extent and cell size also)
3. Write a conditional statement that says where raster 1 is null, replace it with raster 2. Where it is not null, keep raster 1.


Regards,
Eric
0 Kudos
StefanHaglund1
Esri Contributor
Eric, thanks for your input!

I had something like that in mind too. A potential problem with that though is that it runs the risk of creating abrupt changes in the surface around the points after �??burning�?� the dem.

I will try that and also to do a focalmean on the resulting surface, probably iterating this a couple of times.

As you can tell, the pixels under the input points are more important than the rest of the surface. I realize this might sound a little strange but that is the directives in this project.

Do you have an idea for an interpolator that will give me the smallest difference between the input points interpolated value at that pixel?

Thanks!
0 Kudos