柵格矢量數據轉換

釋文: 空間數據的表達有柵格數據和矢量數據兩種結構,在套用中常要根據需要互相轉換。柵格數據以矩陣形式記錄數據,數據按行按列規則排列。

詞目

柵格矢量數據轉換 。英文: raster-vector data transformation 。矢量數據將地物分為點、線、面,以點坐標的數據鍊表示地物的空間位置:一個點以一個坐標對(x,Y)表示,一串坐標對的有序排列組成線,線的閉合圍成面。在數學上,一串坐標對的有序排列組成一個矢量,所以稱為矢量數據。從矢量到柵格數據的轉換稱為矢量數據的柵格化,主要用於圖件在噴墨繪圖儀等柵格型外設上的輸出、矢量數據與柵格數據的綜合圖像處理等場合。從柵格到矢量數據的轉換又稱為柵格數據的矢量化,主要用於地圖或專題圖件的掃描輸入、圖像分類或分割結果的存儲和繪圖等。

相互轉換算法

矢量結構與柵格結構的相互轉換,一直是地理信息系統的技術難題之一。這主要是由於轉換程式通常占用較多的記憶體,涉及複雜的數值運算,而難以在實用系統特別是微機地理信息系統中被採用。近年來已發展了許多高效的轉換算法,適用於不同的環境。

對於點狀實體,每個實體僅由一個坐標對表示,其矢量結構和柵格結構的相互轉換基本上只是坐標精度轉換問題。線實體的矢量結構由一系列坐標對表示,在變為柵格結構時,除把序列中坐標對變為柵格行列坐標外,還需根據柵格精度要求,在坐標點之間插滿一系列柵格點,這也容易由兩點式直線方程得到;線實體由柵格結構變為矢量結構與將多邊形邊界表示為矢量結構相似。因此以下重點討論多邊形(面實體)的矢量結構與柵格結構相互轉換問題。

格式轉換

1.內部點擴散算法;該算法由每個多邊形一個內部點(種子點)開始,向其八個方向的鄰點擴散,判斷各個新加入點是否在多邊形邊界上,如果是邊界點,則新加入點不作為種子點,否則把非邊界點的鄰點作為新的種子點與原有種子點一起進行新的擴散運算,並將該種子點賦予多邊形的編號。重複上述過程,直到所有種子點填滿該多邊形並遇到邊界為止。

擴散算法程式設計比較複雜,需要在柵格陣列中進行搜尋,占用記憶體很大。在一定柵格精度上,如果複雜圖形的同一多邊形的兩條邊界落在同一個或相鄰的兩個柵格內,會造成多邊形不連通,則一個種子點不能完成整個多邊形的填充。

2.複數積分算法:對全部柵格陣列逐個柵格單元判斷柵格歸屬的多邊形編碼,判別方法是由待判點對每個多邊形的封閉邊界計算複數積分,對某個多邊形,如果積分值為2πi,則該待判點屬於此多邊形,賦予多邊形編號,否則在此多邊形外部,不屬於該多邊形。

複數積分算法涉及許多乘除運算,儘管可靠性好,設計也並不複雜,但運算時間很長,難以在比較低檔次的計算機上採用。採用一些最佳化方法,如根據多邊形邊界坐標的最大最小值範圍組成的矩形來判斷是否需要做複數積分運算,可以部分地改善運算時間長的困難。

3.射線算法:射線算法可逐點判別數據柵格點在某多邊形之外或在多邊形內,由待判點向圖外某點引射線,判斷該射線與某多邊形所有邊界相交的總次數,如相交偶數次,則待判點在該多邊形的外部,如為奇數次,則待判點在該多邊形內部。

射線算法要計算與多邊形交點,因此運算量大。另一個比較麻煩的問題是射線與多邊形相交時有些特殊情況如相切、重合等,會影響交點的個數,必須予以排除,由此造成算法的不完善,並增加了編程的複雜性。

4.掃描算法:掃描算法是射線算法的改進,通常情況下,沿柵格陣列的行方向掃描,在每兩次遇到多邊形邊界點的兩個位置之間的柵格,屬於該多邊形。掃描算法省去了計算射線與多邊形交點的大量運算,大大提高了效率,但一般需要預留一個較大的數組以存放邊界點,而且掃描線與多邊形邊界相交的幾種特殊情況仍然存在,需要加以判別。

相關詞條

熱門詞條

聯絡我們