1. 程式人生 > >FME對圖斑接邊融合的處理

FME對圖斑接邊融合的處理

原文釋出時間:2010-10-14 23:04:58

作者:毛毛蟲

前段時間客戶想要使用FME做個圖斑的接邊問題,具體要求是:有兩個相鄰的圖層,想要對邊界上相鄰的同類圖斑(如河流水面)融合為一個圖層,這也是常遇到的問題。下面是對這一問題的一種解決方法。

顯然,這個問題需要解決兩個問題:

1、找出邊界上的圖斑;

2、合併同類圖斑。

下面看一下如何解決,首先看一下源資料,由於找不到相關和資料,用地類圖斑圖層來說明這個問題,部分圖層如下:

現在首先找出位於兩個圖層邊界上的圖斑,因為測量方面的誤差問題,可能邊界兩側相鄰的圖斑公共邊界不完全相同(這個問題會在融合時詳細說明),所以對需要首先對邊界做個小緩衝(如0.01,根據你資料的精度來確定),然後使用空間關係轉換器求與邊界緩衝後相交的圖斑,即為要找的位於邊界上的圖斑。用到的轉換器是:Bufferer、SpatialRelator、Tester,模板如下:

這裡兩個源分別為兩個圖斑層,由於我沒有邊界線,首先使用Dissolver、BoundsExtractor和GeometryCoercer轉換器把其中的一個圖層中的所有圖斑融合為一個圖斑,然後提取邊界線,執行完成後的效果如下:

 現在解決第二個問題,對找出的圖斑,進行同類圖斑的合併。直接使用Dissolver轉換器合併,會出現一個問題,如下圖所示:

融合後的圖斑

融合後的圖斑

這就是由於我們上面提到的由於測量誤差等原因造成座標不同而產生的問題(小數點最後幾位可能不同)。

這時候,我們使用轉換器chopper把面轉換為點,對每個點進行捕捉(容差根據資料決定),注意的問題是對於洞,重構面時可能會有問題,因此需要先把洞提取出來,只對外層圖形進行轉點操作,捕捉後重新構面生成洞,然後使用FeatureMerger轉換器對圖形重賦屬性,最後進行融合操作,整個的過程為:

使用counter轉換器是為了後面線連線構面時作為分組依據。

這樣就完成了對相鄰兩個圖層的同類圖斑的拼接融合工作。