FME中的柵格資料操作之十 如何避免黑邊的產生

2021-08-21 03:22:58 字數 2059 閱讀 5702

柵格重投影是很常用的操作,但是在柵格重投影後,我們會看到沿著柵格邊界產生黑邊。

如圖,原始影象

經過重投影後,轉換為:

重投影根據源和目的資料的投影,破壞了初始柵格。柵格可能被拉伸、移位和/或傾斜,但是柵格的性質又要求必須是個矩形。為了保持柵格矩形,fme沿著柵格邊界增加了一些畫素,這些增加的畫素就是出現黑邊的原因。

對於多幅影像,鑲嵌成一張再轉換,可以減少黑邊,但是不能徹底消除。而且fme處理影像的大小是有限制的,不可能無限制的鑲嵌為一張。如何去除黑邊?

下面幾種方法可以參考:

1、最簡單的方法就是通過clipper裁去黑邊。

這裡,我先提取轉換前的柵格矩形框的四個頂點,然後求重投影後這四個頂點的最小的x、y生成的矩形,用這個矩形裁剪轉換後的影像,得到沒有黑邊的資料。具體說明如下:

如圖:先提取轉換之前柵格的範圍,生成乙個矩形(圖中紅色邊框),這個矩形的四個角從左下角順時針依次記作(x1,y1)、(x2,y2) 、(x3,y3) 、(x4,y4)。

重投影之後,影像與矩形都發生了變形。

影像的變形如圖所示,產生黑邊。矩形的變形就是影像出去黑邊的部分。現在我們要提取的裁剪矩形是:(x1,y1)、(x2,y2)做比較,找出較大的x值作為矩形的xmin;(x3,y3) 、(x4,y4)作比較,找出較小的x值作為矩形的xmax;(x1,y1)、 (x4,y4)作比較,找出較大的y作為矩形的ymin; (x2,y2) 、(x3,y3)作比較找出矩形的ymax。

這樣,根據這四個值,就可以生成乙個裁剪所需的矩形。

然後使用clipper轉換器,根據投影後的影像與生成矩形進行裁剪,去除黑邊。

使用到的主要轉換器為:2dboxreplacer、tester、attributecreator、rasterpropertie***tractor、reprojector、clipper。

當然,如果有多幅影像,可以用批量處理的方式進行操作(注意對於相鄰的影像,要有重疊部分,不然用這種方法裁剪後可能中間會有空隙)。

2、使用nodata值。

在重投影前設定nodata值,也就是畫素有rgb值(0, 0, 0)表達nodata值,使用轉換器rasterbandnodatasetter,進行重投影即可。如圖:

生成的影像沒有黑邊。不過仔細觀察後會發現,柵格資料中有很多白點,放大後如圖:

圖中紅色標記部分的單元格屬性為:

也就是說,這種方法不僅設定了黑邊部分的nodata值,也修改了柵格內部值為(0, 0, 0)的值為nodata值。當然,如果通過rasterbandminmaxextractor轉換器,找到資料中沒有值為255的單元格,我們可以設定nodata值為255。

3、使用alpha波段。

當我們影像使用alpha波段,我們能設定"composite using alpha band"為"yes"——這將告訴fme根據他們的alpha波段值來融合柵格,。這樣就得到了沒有黑邊的rgb影像。

ArcGIS Server 中柵格資料的查詢。

本例是想獲取dem資料中的某點的高程值。有兩種方法可以實現,一種是用adf 來實現,另外一種就是通過ao來實現了。其中物件pt就是要查詢的點 1 adf方法 獲取柵格地圖資源 esri.arcgis.adf.web.datasources.imapfunctionality func map.get...

GIS中的柵格資料結構

一 柵格資料 1 柵格資料 柵格資料結構實際就是像元陣列,每個像元由行列確定它的位置。由於柵格結構是按一定的規則排列的,所表示的實體位置很容易隱含在網路檔案的儲存結構中,且行列座標可以很容易地轉為其它座標系下的座標。在網路檔案中每個 本身明確地代表了實體的屬性或屬性的編碼。2 柵格資料的優點 在柵格...

向量或柵格資料的相關統計操作

在實際中經常會遇到這樣的場景,需要把clsss柵格影像的類別值提取到向量的點或麵要素的屬性中,或是把乙個向量資料的屬性按照空間位置關係提取到另乙個向量資料的屬性表中,今天先基於arcgis的工具箱整理了幾種常見的空間交叉統計示例,後面會著手基於開源的類庫開發出相應的功能。1.把class柵格影像的屬...