GDAL源碼剖析(十三)之GDAL網格插值說明

來源:互聯網
上載者:User
一、簡介

英文網址: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軸)
  • 旋轉角度(逆時針方向)

只有點位於搜尋橢圓之內(包括邊界上)的點才用於計算。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.