在一中簡單介紹了一下地圖代數的算術運算,二中介紹了一下柵格資料的基本概念。下面就詳細的說一下地圖代數。包括兩方面的內容:地圖代數的基本運算、地圖代數的函數和類型
1、 地圖代數的基本運算:(算術、關係、位、布爾、組合、邏輯、累計、賦值)
算術運算(+、-、*、/ 、Mod):柵格單元相對應進行加減乘除運算,當Mod作用於有理數時,將截斷小數位,返回整數。若柵格單元沒有數值(Nodata),則相應位置上的返回結果也是NoData。
關係運算(<、>、==、>=、<=):關係運算是根據給定的條件對柵格單元逐個進行比較運算,如果條件為真,則相應的柵格單元返回1,否則返回0,如下:
位元運算(<<、>>):只能作用單個柵格圖層,是對柵格數值的二進位表達,而且只能對整數進行運算,儲存格的數字是有理數是,首先截斷小數位。
邏輯運算(Diff、In、Over):這些運算術都需要兩個輸入柵格圖層進行比較,一般是以第一個圖層作為參考進行比較返回結果。Diff差異運算用於判斷兩個柵格圖層單元的數值是否存在差異,有差異的空間位置上,用第一個輸入圖層相應位置的值對輸出單元賦值,沒有差異的儲存格賦值為0。In運算術也是對兩個輸入進行計算,但不是兩個柵格圖層,通常情況下,第一個輸入時一個運算式(通常是一個柵格或一個資料列),第二個輸入時一組數字。其基本思想是用預先選出的一組數字和柵格矩陣的數值作比較,和這組數字不一致的儲存格賦值為0。Over非零尋找運算子用於兩個輸入柵格矩陣搜尋0值儲存格,第一個矩陣中所有儲存格中的非零值作為輸出,當第一個輸入矩陣中的儲存格的值為0時,用第二個柵格矩陣相應位置的儲存格進行賦值。
組合運算(And,Or):就是根據一定的運算規則,進行輸出。該運算是對所有可能的組合的預先規定,可以將組合運算看成是布爾運算的一般化,在組合運算中若輸入值被計算為真(0),則輸入儲存格被賦以預先規定的兩個儲存格組合情況下的值,如下的And運算。
矩陣1 矩陣2
輸出
1 1 0
2 1 1
3 3 7
2、 地圖代數中的函數和類型
地圖代數中的函數為柵格資料集提供了基本的資料變換功能、統計描述和推斷功能、查詢功能、接近性度量功能(緩衝區)、疊加分析功能、比較分析功能、預測功能、以及擴充計算等各個方面。
主要的函數有:
1) 局部函數(包括數學函數,分類函數,選擇函數,統計函數),局部函數是基於儲存格操作運算的計算函數,不考慮鄰域單元;
2) 焦函數或鄰域函數,根據近鄰的柵格單元計算輸出值的函數,可用於表面光滑(滑動平均)、邊緣檢測、評價變化等;
3) 塊函數,又稱面函數,可以看成是鄰域函數的另外一個版本,對相連的儲存格構成的“塊”整體重新賦以相同的值。
4) 類區函數,是對類型區進行操作的函數。類區是空間上連續或分割的實際的地理類型地區,類型區中的屬性具有一致性,類區函數使用的是另外的柵格圖層來對目標儲存格的值進行重新計算或分類。
5) 全域函數,全域函數式對輸入的整個柵格圖層資料進行操作的函數,與這些函數相關的是距離計算、幾何特徵分析、最短路徑計算。
6) 應用函數,應用是複雜的,需要和局部、鄰域、類區、和全域函數相結合,得到最終的應用函數。
2.1局部函數
局部函數主要可以歸納為以下四種類型:
1) 數學函數:三角函數(sin,cos,tan,cost等),指數函數(exp等),對數函數(log等),冪函數(sprt、power等),以及數值處理函數(abs、rand、ceil、float等);
2) 分類函數:reclass;
3) 選擇函數:選擇(select,select circle),條件(con,test,pick);
4) 統計函數:(min,max,mean,majority等);
2.2鄰域函數
鄰域函數是通過對柵格資料集中焦元(focal cell)附近的儲存格的數值按照某種規則計算後,將得到的數值賦給焦元的運算。因此鄰域函數的概念有兩個:一是如何定義鄰域;二是按照何種規則對鄰域中的儲存格數值進行計算。
鄰域包括以下幾種類型:距離或方向鄰域;靠近或延伸的鄰域;度量和拓撲鄰域;點、線或面的鄰域。在實際應用中,通常採用的鄰域形狀有矩形、圓形、環形面、扇形。確定了鄰域形狀之後,就是焦元數值的計算,一般都是統計函數如最大值、最小值、和、範圍、標準差等。
2.3類區函數
類區函數非常類似於鄰域函數,區別是類區是柵格總所有具有相同值得儲存格而不考慮它們在空間是否相鄰。
2.4塊函數
塊函數是一種滑動視窗的操作函數,可以進行柵格單元的空間濾波,主要用於遙感影像的某些計算處理過程,它使用的統計量域鄰域函數相同,如min,max,mean等。不同的是塊函數使用的鄰域是矩形視窗,並且在空間上的滑動過程不是逐個儲存格進行的,而是按照矩形視窗的大小,先從左向右,然後從上到下進行滑動,根據統計量對視窗所覆蓋的儲存格進行計算後賦值給這些儲存格。
2.5全域函數
全域函數作用下的儲存格的輸出是柵格資料集的函數,不是基於某個儲存格或一組儲存格進行統計計算。主要包括距離函數,表面函數。
2.5.1距離函數
直線距離函數:直線距離函數用於計算一個源柵格單元或一組柵格單元到其最鄰近的柵格之間的距離和方向。此外還能根據這種距離上的最接近性分配空間上的柵格單元到相應的源柵格上。下面是ArcGIS 直線距離的圖解:
加權距離函數:加權距離Function Compute的是從任意一個儲存格到源的最小費用距離。需要兩個圖層:一個是柵格圖層,另外一個是用來描述成本或阻力因素的圖層。為了計算用加權距離計算一條最短路徑,還需要一個描述方向的函數,兩者結合起來即可描述費用距離意義上的最短路徑。下面是ArcGIS 直線距離的圖解:
2.5.1表面函數:包括空間插值函數、坡度、坡向、光照函數
空間插值、坡度、坡向較為常見,這裡不再介紹,詳細的說一下光照函數。光照函數(hill shading)又稱為山體陰影,是一種計算地形或建築物表面太陽光照射量的方法。
光照函數根據假定的光源位置,考慮儲存格之間的遮擋影響,計算柵格資料集中人一個儲存格的光照值。其中表達從灰暗到明亮的光照數值的範圍是0~255.
光照函數建模需要太陽方位(azimuth)和高度角(altitude)兩個參數,太陽方位從北開始順時針旋轉,變化範圍0度~360度,太陽高度角是光源對於地平的角度,變化範圍0度~90度。