ArcGIS中地形轉柵格的工作原理?

插值過程旨在利用常用輸入數據類型和高程表面的已知特徵。該方法將採用迭代有限差分插值技術。它經過優化,因此具有局部插值方法(例如,反距離權重 (IDW) 插值)的計算效率,同時又不會犧牲全局插值方法(例如,克里金法和樣條函數法)的表面連續性。實際上,該方法屬於離散化的薄板樣條函數法 (Wahba, 1990),其粗糙度懲罰係數經過修改,從而使經過擬合後的 DEM 能夠還原真實的地形突變,例如河流、山脊和懸崖。

工具/原料

ArcGIS

方法/步驟

  地形轉柵格工具屬於一種插值方法,專門用於創建符合真實地表的數字高程模型 (DEM)。該方法基於由 Michael Hutchinson(1988、1989、1996、2000、2011)開發的 ANUDEM 程序。有關 ANUDEM 在整個大陸範圍的 DEM 生產的應用,請參閱 Hutchinson and Dowling (1991) 以及 ANU Fenner School of Environment and Society and Geoscience Australia (2008)。Hutchinson and Gallant (2000) 和 Hutchinson (2008) 對 DEM 在環境建模中的應用進行了討論。Hutchinson et al 對 ANUDEM 的後續開發進行了討論。(2009, 2011). ArcGIS 中使用的 ANUDEM 的當前版本為 5.3。

  在施加約束的同時,地形轉柵格會為柵格內插高程值,從而確保:

  地形結構連續;

  準確呈現輸入等值線數據中的山脊和河流;

  因此,它是唯一專門用於智能地處理等值線輸入的 ArcGIS 插值器。

  通過文件實現地形轉柵格工具在多次執行地形轉柵格工具的情況下非常有用,因為更改參數文件中的單個條目然後重新運行工具通常要比每次都重新填充工具對話框方便。

插值過程

插值過程旨在利用常用輸入數據類型和高程表面的已知特徵。該方法將採用迭代有限差分插值技術。它經過優化,因此具有局部插值方法(例如,反距離權重 (IDW) 插值)的計算效率,同時又不會犧牲全局插值方法(例如,克里金法和樣條函數法)的表面連續性。實際上,該方法屬於離散化的薄板樣條函數法 (Wahba, 1990),其粗糙度懲罰係數經過修改,從而使經過擬合後的 DEM 能夠還原真實的地形突變,例如河流、山脊和懸崖。

水是決定多數地形大致形狀的主要侵蝕力。因此,大部分地形都包含很多山頂(局部最大值)但匯卻很少(局部最小值),從而形成一種連續的地形樣式。地形轉柵格將利用有關表面的這方面知識對插值過程施加約束,從而使地形結構連續並準確呈現山脊和河流。施加的該地形條件約束有助於通過較少的輸入數據生成更精確的表面。輸入數據的數量所能達到的數量級將小於使用數字化等值線充分描述表面時通常所需的數量級,從而使獲得可靠 DEM 的成本進一步降至最低。全局地形條件約束實際上也消除了為移除生成表面中偽匯而進行編輯或後處理的需要。

該程序在移除匯點時表現得比較謹慎,並且在與輸入高程數據可能會產生矛盾的位置並不會施加地形條件約束。此類位置通常以匯的形式顯示在診斷文件中。通過此信息可校正數據誤差,尤其適合處理大型數據集。

地形強化過程

地形強化過程的目的是將輸出 DEM 中尚未識別為輸入匯要素數據集中匯的所有匯點移除。該程序運行的前提假設是所有未識別的匯都屬於錯誤,因為天然景觀中匯較不常見 (Goodchild and Mark, 1987)。

地形強化算法嘗試通過修改 DEM 來清除偽匯,從而利用每個偽匯周圍水域內的最低凹谷點推斷出地形線。該算法並不會嘗試清除通過“匯”功能得到的真實匯。由於匯點的清除受到高程容差的限制,因此嘗試清除偽匯時該程序將非常謹慎。也就是說,該程序不會清除由於大於容差 1 的值而與輸入高程數據相矛盾的偽匯。

地形強化的功能還可以通過結合河流線數據而得到補充。這在需要更準確地安置河流時十分有用。可通過允許每個像元擁有最多兩個的下游方向對河流的支流進行建模。

如果關閉地形強化,則匯點清除過程將被忽略。如果您擁有除高程之外其他內容(例如溫度)的等值線數據並要為這些數據創建表面,則關閉地形強化十分有用。

等值線數據的使用

最初,使用等值線是存儲和表示高程信息的最常見方法。遺憾的是,該方法也最難正確應用於各種常規插值法。其缺點就在於等值線之間的信息欠採樣,特別是在地形較低的區域。

插值過程初期,地形轉柵格將使用等值線中固有的信息來構建初始的概化地形模型。這是通過標識各等值線上的局部最大麴率點實現的。然後,使用初始的高程格網(Hutchinson,1988)可得到一個與這些點相交的由曲線河流和山脊組成的網絡。這些線的位置會隨著 DEM 高程的反覆更新而更新。該信息可用於確保輸出 DEM 具有正確的水文地貌屬性,還可用於驗證輸出 DEM 準確與否。

等值線數據點也可用於在每個像元中內插高程值。所有等值線數據都會被讀取並概化。最多從每個像元內的等值線中讀取 100 個數據點,並將平均高程值用作與等值線數據相交的每個像元的唯一高程數據點。對於每個 DEM 分辨率來說,每個像元僅使用一個關鍵點。因此,多條等值線與輸出像元交叉的等值線密度是多餘的。

確定好表面的大致形態後,等值線數據還將用於為各像元內插高程值。

使用等值線數據內插高程信息時,將讀取並概化所有等值線數據。對於每個像元,將從這些等值線中最多讀取 50 個數據點。在最終分辨率下,每個像元僅使用一個關鍵點。因此,多條等值線與輸出像元交叉的等值線密度是多餘的。

湖泊數據的使用

早期版本的地形轉柵格中的湖泊面是用於將每個湖泊表面的高程設置為與湖泊緊鄰的所有 DEM 值的最小高程的簡單掩膜。湖邊界算法已升級為能夠自動確定與相連河流線和相鄰高程值完全兼容的湖泊高度。

經修訂後的湖邊界方法也將每個湖邊界視為具有未知高程的等值線,並會根據湖邊界上的像元值以迭代方式估算該等值線的高程。同時會將每個湖邊界的高程調整為與任意上游和下游湖泊的高程保持一致。每個湖邊界高程還會調整為與相鄰的DEM 值保持一致。會使湖泊外的像元值位於湖邊界的高程之上,而使湖泊內的像元值位於湖邊界的高程之下。

允許湖邊界在湖內包括島以及在島內包括湖。正如湖邊界面所確定,湖泊內的所有 DEM 值都會設置為湖邊界上的 DEM的估算高度。

懸崖數據的使用

懸崖線允許數據懸崖線每側的相鄰像元值之間的連續中出現完全中斷,正如將其編碼到輸出柵格中那樣。懸崖線必須以有向直線形式提供,每條懸崖線的低側位於左側,高側位於右側。這樣就可以移除位於懸崖錯誤側的高程數據點(正如將其編碼到柵格中那樣),並且更好地相對於流線放置懸崖。

已經發現,在河流和懸崖上施加的微小位置偏移(將河流和懸崖包括在柵格中時)會導致這些數據之間發生偽相交。因此開發了一種自動化方法,可在放置河流和懸崖線時進行微小調整,從而最大限度地減少這種偽相交。

海岸線數據的使用

位於該面要素類所指定面以外的最終輸出 DEM 中的像元會被設置為在內部確定的特殊值,該值小於用戶所指定的最小高度限制。由此產生的結果為:可將一個完整的沿海面用作輸入並將該面自動裁剪為處理範圍。

多分辨率插值

該程序使用的是多分辨率插值方法,分辨率範圍可從粗略柵格採用的分辨率到用戶指定的精細分辨率。在每種分辨率下,將強制施加地形條件約束並執行插值,而剩餘匯點的數量將記錄在輸出診斷文件中。

處理河流數據

地形轉柵格工具要求河流網絡數據中的所有弧線均指向下坡方向,並且網絡中沒有面(湖泊)。

河流數據應由樹枝狀的各條獨立弧線組成,其中任意的平行河岸、湖泊面等都將通過交互式編輯進行清理。編輯網絡之外的湖泊面時,應從蓄水區域的起始到末端放置單一弧線。如果已知或存在一個歷史河床的軌跡,則該弧線應沿著此軌跡。如果已知湖泊的高程,則湖泊面及其高程可作為“等值線”輸入數據。

要顯示線各個部分的方向,可將符號系統更改為“終點處顯示箭頭”選項。這樣,將使用顯示線方向的箭頭符號繪製線的各個部分。

創建和鑲嵌相鄰柵格

有時需要根據輸入數據的相鄰切片創建 DEM。如果輸入要素從地圖圖幅系列中獲得,或者由於內存限制而必須將輸入數據分成若干部分進行處理,通常會發生這種情況。

插值過程使用周圍區域中的輸入數據來定義表面的形態和地形,然後內插輸出值。但是,任一輸出 DEM 邊緣處的像元值都沒有中心區域的值可靠,因為它們只能根據一半的信息進行插值。

因此要使對感興趣區域邊緣處的預測最準確,輸入數據集的範圍應大於感興趣區域。像元間距參數提供了一種根據用戶指定的距離修剪輸出 DEM 邊緣的方法。重疊區域的邊緣至少應為 20 個像元寬。

如果要將多個輸出 DEM 合併為單個柵格,輸入數據應與相鄰區域存在部分重疊。如果不存在重疊,合併後 DEM 的邊緣可能會不平滑。多次內插中每次內插的輸入數據集範圍應比進行一次內插僅得到一個插值時的區域大,這樣才能確保儘可能準確地預測邊緣。

創建多個 DEM 後,最好使用鑲嵌地理處理工具的“混合”選項或“平均值”選項將它們合併。該功能提供的選項可對重疊區域進行處理,從而使數據集之間實現平滑過渡。

評估輸出

  應對每個創建的表面進行評估,以確保提供給程序的數據和參數所呈現出表面逼真。評估輸出表面質量的方法有很多種,具體取決於創建表面的可用輸入類型。

  最常見的評估方法是使用等值線工具根據新表面創建等值線,然後將這些等值線與輸入等值線數據進行比較。新建等值線的間隔最好是原始等值線間隔的二分之一,這樣才便於在等值線間檢查結果。原始等值線和新建等值線疊在一起繪製將有助於識別插值誤差。

  另一種從視覺上進行比較的方法是將可選輸出地形分佈情況與已知河流和山脊進行比較。地形要素類中包含河流和山脊,它們將在地形強化過程中由程序生成。這些河流和山脊應與區域中已知的河流和山脊重合。如果將某河流要素類作為輸入,則輸出河流與輸入河流應該可以幾乎完全重疊,但輸出可能經過略微概化。

  評估所生成表面質量的一種常見方法是在插值過程中保留一定比例的輸入數據。生成表面後,可以從生成的表面中減去這些已知點的高度,從而檢查新表面與真實表面的接近程度。這些差異可用來計算表面的測量誤差,例如均方根 (RMS) 誤差。

  地形轉柵格提供了一套完整的步驟,用於評估擬合後的 DEM 的質量、優化 DEM 分辨率以及檢測輸入數據中的錯誤。

  可選輸出診斷文件可用來評估容差設置清除輸入數據中的匯的有效程度。減小容差的值可能會造成程序在清除匯點時表現得更謹慎。

  輸出其餘匯點要素類包含所有其餘偽匯的位置。應對此要素類以及輸出河流折線要素一同進行檢查以查出所有輸入地形數據中的錯誤。

  輸出殘差點要素類包含所有大高程數據殘差的位置,正如局部離散誤差縮放所得一樣。大比例縮放殘差表示輸入高程數據和河流線數據之間存在衝突。這可能也與不良的自動地形強化有關。這些衝突可以通過在首次檢查和糾正現有輸入數據中的錯誤後提供附加的流線和/或點高程數據來進行修復。未大比例縮放的殘差通常表示存在輸入高程誤差。

  輸出等值線錯誤點要素類包含輸出等值線上的點的位置,該等值線具有來自擬合後的 DEM 中的具有明顯偏差的殘差。誤差值為 1 通常表示具有不同高程的等值線彼此相連處的點的位置,是等值線標註錯誤的明確指示。

  輸出河流和懸崖錯誤點要素類是一個表示河流線和懸崖線數據質量的重要指標,尤其是河流方向錯誤和懸崖方向錯誤,應始終對其進行檢查。要素類具有下列代碼:

  數據河流線網絡中的真迴路。

  以外柵格編碼的河流網絡中的迴路。

  通過連接湖泊的河流網絡中的迴路。

  支流點。

  懸崖上的河流(瀑布)。

  表示從湖泊流出多條河流的點。

  未使用代碼。

  懸崖旁高度與懸崖方向不一致的點。

  未使用代碼。

  已移除圓形支流。

  無流入河流的支流。

  不同於出現數據河流線支流位置的輸出像元中的柵格化支流。

  處理邊條件時出錯 - 非常複雜的河流線數據的指示符。

  輸出河流折線要素類包含由地形轉柵格施加的所有地形約束,正如基於輸入河流線數據、河流線和山脊線所確定的一樣,這些數據和線是基於通過自動地形強化獲得的等值線數據和河流線推斷而來的。可對這些內容進行檢查以查出輸入河流線中的位置錯誤,並對與輸入河流線和自動化地形強化相關聯的約束進行適當的一致性驗證。每個衍生河流線的類型均被賦予了一個不同的代碼。跨越懸崖線的河流線由短河流線表示,每個像元具有一個單獨的代碼。要素類也包括用於通過連接超過第二高程容差的河流線和湖泊來標記較大的源高程數據間隙的線。這些都是用於表示源高程數據錯誤的有用指標。拆線要素按如下方式編碼:

  不在懸崖上的輸入河流線。

  在懸崖上的輸入河流線(瀑布)。

  清除偽匯的地形強化。

  從等值線拐角確定的河流線。

  從等值線拐角確定的山脊線。

  未使用代碼。

  數據河流線邊條件。

  未使用代碼。

  表示大型高程數據間隙的線。

  等值線偏差

  該插值算法中存在一個小偏差,該偏差將使輸入等值線對等值線的輸出表面產生較嚴重的影響。該偏差將使輸出表面在穿過等值線時略微變扁。這可能會在計算輸出表面的剖面曲率時產生令人誤解的結果,但並不明顯。

使用“地形轉柵格”產生問題的原因

  如果在運行地形轉柵格時運到任何問題,都可以對以下幾點內容進行檢查以獲得有關大多數常見問題的說明及解決方案。

  沒有足夠的可用系統資源。處理期間,地形轉柵格中使用的算法將盡可能多地在內存中保存信息。這樣,點、等值線、匯、河流和湖泊數據便可同時訪問。為了便於處理大型數據集,建議在運行該工具之前關閉不需要的應用程序以釋放物理 RAM。磁盤上最好也具備足夠的系統交換區空間。

  等值線或點輸入對於指定的輸出像元大小可能過密。如果一個輸出像元覆蓋了多個輸入等值線或點,則算法將無法為該像元確定一個值。要解決此問題,請嘗試執行以下任一操作:

  1、減小像元大小,然後在執行地形轉柵格後重採樣至較大的像元大小。

  2、使用輸出範圍和像元間距對輸入數據中各較小的組成部分進行柵格化。使用鑲嵌工具將生成的各柵格組成部分進行組合。

  3、將輸入數據裁剪為多個重疊的部分,然後分別對每部分運行地形轉柵格。使用鑲嵌工具將生成的各柵格組成部分進行組合。

  表面插值器的應用可能與輸入數據集不一致。例如,如果有一個匯輸入,其中所包含點的數量多於輸出柵格中將生成像元的數量,則使用該工具將失敗。經過密集採樣的數據源(如激光雷達數據)可能存在類似的問題。在這種情況下,使用 NO_ENFORCE 選項可能有一定的幫助,但最好先正確瞭解插值器的工作原理,這樣才能防止誤用。

相關問題答案