I found out how to calculate the interpolated temperature data points that need to be rendered. The code is very simple really:
Public Structure PointXYZ
Public X As Single
Public Y As Single
Public Z As Single
End Structure
Public Function GetZInterpolationForPoint(ByVal X As Single, ByVal Y As Single, ByVal KnownPoints() As PointXYZ, ByVal P As Single) As PointXYZ
Dim I As Integer
Dim Sum1 As Single = 0
Dim Sum2 As Single = 0
For I = 0 To KnownPoints.Length - 1
Dim DX As Single = (KnownPoints(I).X - X) ^ 2
Dim DY As Single = (KnownPoints(I).Y - Y) ^ 2
Dim LP As Single = (DX + DY) ^ (0.5)
Sum1 = Sum1 + KnownPoints(I).Z / (LP ^ P)
Sum2 = Sum2 + (1.0 / (LP ^ P))
Next
Dim PT As New PointXYZ
PT.X = X
PT.Y = Y
PT.Z = Sum1 / Sum2
Return PT
End Function
You just call the function passing an array of PointXYZ which holds the known data points, the desired x,y value, and you get in return a PointXYZ structure containing the interpolated value.
Google heatmap however did not render the interpolated values correctly. I am wondering if there is a way to render these existing data points on top of google maps.