一、簡介
英文網址:http://www.gdal.org/grid_tutorial.html。
網格插值的意思就是從離散的資料點建立一個柵格映像的過程。通常情況下,你有一系列研究地區的離散點,如果你想將這些點轉換為規則的網格資料來進行進一步的處理,或者和其他網格資料進行合并等處理。是網格插值的一個:
網格插值
使用資料插值和逼近演算法可以用來解決這個問題,但是插值的作用並不僅僅用來處理這個問題。有時候,你並不需要對資料進行插值處理,你需要做的就是計算一下資料覆蓋地區的統計值和其他指標。統計值本身是十分有用的,或者你可以根據這些來選擇更好的插值演算法和參數。
這就是GDAL網格插值API所要理解的東西。它可以協助你更好的對資料進行插值(參考下面的離散資料插值)或者計算資料的指標資訊(參加下面的資料指標計算)。
一共有兩種方式來使用這個介面。一種是使用GDALGridCreate的C語言介面編程實現,另一種是使用gdal_grid工具來使用。本文後面的內容將詳細介紹GDAL網格插值API的演算法原理及其參數表示的含義。
二、離散資料插值1、反距離權重插值(Inverse Distance to a Power)
反距離權重插值方法是一種加權平均插值方式。你應該提供離散的資料值和每個點的座標資訊以及輸出的格網,然後函數會插值計算輸出格網節點的資料值。每一個格網節點的計算方式如下:
上式中字母的含義分別是:
- Zi是已知點i的值;
- r是格網節點到點i的距離;
- p是權重指數;
- n是搜尋橢圓中的點個數。
在這個演算法中權重係數ω的計算方式是:
可以參考函數GDALGridCreate中結構體GDALGridInverseDistanceToAPowerOptions的參數列表和gdal_grid工具的invdist選項列表。
2、移動平均值(Moving Average)
移動平均值是一個簡單的資料平均演算法,具體是用一個橢圓形的移動視窗,然後搜尋在移動視窗中的所有的離散點,然後計算平均值。搜尋橢圓可以指定旋轉角度,橢圓的中心點位於網格節點。資料點的最少個數的平均值可以進行設定,如果沒有足夠的點在移動視窗中,這個網格節點就是空的,然後使用NODATA值來進行填充。
演算法的數學公式可用下面的公式來表示:
上式中字母的含義分別是:
- Z是插值結果,
- Zi是已知點i的值;
- n是搜尋橢圓中的點個數。
可以參考函數GDALGridCreate中結構體GDALGridMovingAverageOptions的參數列表和gdal_grid 工具的average選項列表。
3、最鄰近插值(Nearest Neighbor)
最鄰近插值不使用任何插值演算法和平滑演算法,只需在搜尋橢圓中找到離中心網格節點最近的離散點,然後把該離散點的值作為網格的節點值。如果沒有找到點,將該格網節點設定為NODATA值。
可以參考函數GDALGridCreate中結構體GDALGridNearestNeighborOptions的參數列表和gdal_grid工具的nearest選項列表。
三、資料指標計算
所有的指標計算都是用一個叫GDALGridDataMetricsOptions的結構體來進行控制。
1、資料最小值(Minimum Data Value)
在搜尋橢圓中找到的最小值,如果沒有找到點,將返回NODATA值,公式如下:
式中:
- Z是返回的結果值;
- Zi表示第i個點的值;
- N表示在搜尋橢圓中的點。
2、資料最大值(Maximum Data Value)
在搜尋橢圓中找到的最大值,如果沒有找到點,將返回NODATA值,公式如下:
式中:
- Z是返回的結果值;
- Zi表示第i個點的值;
- N表示在搜尋橢圓中的點。
3、資料範圍(Data Range)
在搜尋橢圓中最大值和最小值的差,如果沒有點,返回NODATA值,公式如下:
式中:
Z是返回的結果值;
Zi表示第i個點的值;
N表示在搜尋橢圓中的點。
4、搜尋橢圓(Search Ellipse)
在格網插值演算法中用到的搜尋視窗是一個旋轉的橢圓,可以用下面三個參數來進行描述:
- 第一半徑(如果旋轉角度為0,就是x軸)
- 第二半徑(如果旋轉角度為0,就是y軸)
- 旋轉角度(逆時針方向)
只有點位於搜尋橢圓之內(包括邊界上)的點才用於計算。