arcgis中成本距離工具工作原理解析

從像元的角度來講,成本工具的目標是確定「分析」窗口中各像元位置到某個源的最小成本路徑。您必須確定每個像元的通向源的最低累積成本路徑、考慮了最小成本路徑的源,以及最小成本路徑本身。

成本距離工具與歐氏工具相類似,不同點在於歐氏工具計算的是位置間的實際距離,而成本距離工具確定的是各像元距最近源位置的最短加權距離(或者說是累積行程成本)。這些工具應用的是以成本單位表示的距離,而不是以地理單位表示的距離。

所有成本距離工具都需要源數據集和成本柵格數據集作為輸入。

工具/原料

arcgis軟體

方法/步驟

計算成本距離

成本距離工具可創建輸入柵格,在柵格中為每個像元分配到最近源像元的累積成本。該算法應用在圖論中使用的結點/連接線像元製圖表達。在結點/連接線製圖表達中,各像元的中心被視為結點,並且各結點通過多條連接線與其相鄰結點連接。

每條連接線都帶有關聯的阻抗。阻抗是根據與連接線各端點上的像元相關聯的成本(從成本表面),和在像元中的移動方向確定的。

分配給各像元的成本表示在像元中移動每單位距離所需的成本。每個像元的最終值由像元大小乘以成本值求得。例如,如果成本柵格的一個像元大小為 30,某特定像元的成本值為 10,則該像元的最終成本是 300 單位。

結點行程成本

相鄰兩結點間的行程成本取決於這兩個結點的空間方向。像元的連接方式也會影響行程成本。

相鄰結點成本

從一個像元移動到四個與其直接連接的近鄰之一時,跨越連接線移動到相鄰結點的成本為用 1 乘以像元 1 與像元 2 的和,然後再除以 2:

a1 = (cost1 + cost2) / 2

其中:

cost1 - 像元 1 的成本

cost2 - 像元 2 的成本

a1 - 從像元 1 到像元 2 連接線的總成本

累積垂直成本

累積成本由以下公式確定:

accum_cost = a1 + (cost2 + cost3) / 2

其中:

cost2 - 像元 2 的成本

cost3 - 像元 3 的成本

a2 - 從像元 2 移動到 3 的成本

accum_cost - 從像元 1 移動到像元 3 的累積成本

對角結點成本

如果沿對角線移動,則連接線上的行程成本為 1.414214(或 2 的平方根)乘以像元 1 的成本加上像元 2 的成本,再除以 2:

a1 = 1.414214 (cost3 + cost2) / 2

確定對角線移動的累積成本時,必須使用以下公式:

accum_cost = a1 + 1.414214(cost2 + cost3) / 2

累積成本像元列表

使用圖論創建累積成本距離柵格可被視作嘗試識別最低成本像元,並將其添加到輸出列表。這是起始於源像元的疊代過程。每個像元的目標是快速分配到輸出成本距離柵格中。

在初次疊代中,識別出源像元並分配 0 值,因為它們返回自身不消耗累積成本。接下來,啟用全部源像元的近鄰,使用上述累積成本公式將成本分配到源像元結點與鄰近像元結點之間的連接線。各鄰域像元都可以達到某個源;因此,可以選擇它們或將它們分配給輸出累積成本柵格。要分配到輸出柵格,像元必須具有到達某個源的次最低成本路徑。

累積成本值按由最低累積成本到最高累積成本的順序排列於列表中。

從活動累積成本像元列表中選擇最低成本像元,然後將該像元位置的值分配給輸出成本距離柵格。活動像元的列表會變大,以包括所選像元的近鄰,因為此時這些像元已具有到達某個源的方式。列表中只有可能到達某個源的像元是活動的。使用累積成本公式計算移動到這些像元的成本。

再次選擇列表中具有最低成本的活動像元,擴大鄰域,計算新的成本,並將新的成本像元添加到活動列表。

不必連接源像元。所有未連接的源對活動列表的影響相同。無論要分配到的源為何,僅選擇和擴充具有最低累積成本的像元。

此分配過程繼續執行。而且,如果通過將新像元位置添加到輸出柵格創建新的成本較低的路徑,則將更新活動列表上的像元。

當活動列表上出現新的像元路徑時會進行此更新,因為更多的像元被分配到輸出柵格。當活動累積成本列表上具有最低值的像元被分配到輸出柵格時,計算所有累積成本。也會計算新分配的輸出像元的相鄰像元的成本,即使相鄰像元位於其他像元的活動列表上。如果活動列表上的位置的新累積成本大於這些像元當前的累積成本,則忽略該值。如果活動列表上的位置新累積成本小於這些像元當前的累積成本,則使用新值替換掉活動列表上該位置的原有累積成本。此時已具有到達某個源的更廉價和更理想路徑的像元在活動選擇列表中上移。

在以下示例中,將第 3 行、第 1 列(用框高亮顯示)的像元位置放在活動列表上時,它達到柵格頂部的源的累積成本為 11.0。然而,因為較低的源擴展到此位置,該像元獲得了到達其他源的更廉價的累積成本路徑。由於存在這一較低的累積成本,因此應早些在活動列表上更新該位置的值,並分配到輸出。

如果在輸入源柵格上存在多個區域或多組互不相連的源像元,則增長過程繼續,並且無論來自哪個源,都將從活動列表中分配最低成本像元。

當增長面相遇時,返回源的最低成本路徑的確定過程會繼續,直到所有具備條件的像元獲得成本值為止。

可能出現這種情況:當增長模式的鋒面相遇時,一個增長模式的像元將能夠以更低成本到達其他組或增長模式中的某個源像元;如果的確如此,它們將被重新分配到新的源。這種行為先前以第 3 行、第 1 列的像元進行過表示,下面則以第 3 行、第 6 列處的像元再次說明。

選擇活動列表中的所有像元時,其結果是累積成本或加權距離柵格。應用的流程可確保各像元具有最低累積成本。為所有像元執行此過程,直到遇到柵格的邊、窗口的邊界或達到最大距離為止。

不允許穿越包含 NoData 值的像元。一組 NoData 像元的後側像元的最低累積成本由繞過這些位置所需的成本確定。如果輸入成本柵格上的某像元位置分配了 NoData,則 NoData 將被分配到成本距離輸出柵格上對應的像元位置。

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場