顧及屬性的碎麵融合

2021-08-20 18:37:20 字數 1953 閱讀 5952

聯絡:qq44295133

這裡先設定兩個關鍵字:融合、屬性,下面所有資料分析都將提及。

在處理圖斑的時候,我們經常碰到這樣的問題:當圖斑面積或寬度小於相應地圖比例尺下的最小上圖面積時,需要對它進行融合(消融

),即把它融合到相鄰的斑塊。

我們知道,

arcgis

有現成工具

arctoolbox\toolboxes\data management tools\generalization\eliminate

,該工具允許所選碎麵融合進相鄰共享邊較長或面積較大的麵內。然而,美中不足的是,該工具融合條件不包含屬性字段,比如跨行政區融合圖斑;再者,與絕大多數

arctoolbox

一樣,該工具的結果是生成新要素集,不能直接針對原資料集進行更新操作。

因此,有必要自定義工具實現這一功能,

fme無疑是乙個不錯的選擇。在

fme readers and writers

中我們學習了通用資料庫的三種寫入方式:

insert (default) 

、update

、delete

,此外,這三種方式也存在於要素級別寫入中。

(相關博文

——1.發布引數

將屬性字段作為「

choice or text

」發布到引數區,預設值設定為空。當需要將屬性字段作為融合條件時,執行選擇或輸入指定欄位名,反之。

需要指出的是,後續所有的操作均以此字段作為

group by

選項。2.

篩選可融合碎麵及其相鄰面

上圖左為碎麵探測轉換器,在後續文章關於自定義轉換器的應用中將做說明;第乙個空間位置過濾轉換器找出與碎麵相鄰的其它面,作為融入的物件;第二個空間過濾函式選出原輸入碎麵中與上一步選出的相鄰面接觸的部分,轉換器設定與前乙個相同。(為便於區分,後面統稱碎麵、相鄰面。)

這裡對資料作一說明。實際資料中,圖斑可能是充滿無縫隙的,也可能是孤立有縫隙的。那麼就存在碎麵周圍布存在與之接觸的面,也就無法融合了。後面要素級別的刪除操作將導致不可逆的結果。

3.求共享邊長最大值

這裡首先需要將上述篩選出來的碎麵轉化為線要素,然後與相鄰面進行疊加處理,再按要素

id(以原碎麵

oid屬性

)分別統計疊加後線段的長度並取最大邊長。

通過lineonareaoverlayer

將相鄰面的要素

id傳遞給最長共享邊,並將該字段設定為融合標記,分別通過各自原有要素

id關聯

(featuremerger)

給碎麵及相鄰面。經過這一系列處理,我們已經為融合創造了條件。

4.建立相應要素

fme_db_operation

對於圖1

的輸出,我們可以設定該屬性值為

delete

;對於圖

3-3的輸出,設定為

update

。這兩個正好作為自定義轉換器的兩個不同輸出端。

利用fme

對資料庫的不同寫入方式這一特徵,我們可以加速資料處理。

碎碎念 廣州的生活

這篇文字或許就是 不知道說點什麼的說點什麼 之前有看過一篇文章,關於如何寫東西的,有句話是,如果你不知道寫什麼,那就 寫上 我不知道寫什麼 哈哈,仔細想來這也不失為乙個辦法,感覺最近 下筆 很糾結啊。來廣州工作快要乙個月了,說說這邊的生活吧 地點 一直在說自己在廣州工作,的確是廣州,不過是廣州 中國...

分分鐘的碎碎念

以前有個孩子,他分分鐘都在碎碎念。不過,他的念頭之間是有因果關係的。他會在本子裡記錄每乙個念頭,並用箭頭畫出這個念頭的 於之前的哪乙個念頭。翻開這個本子,你一定會被互相穿梭的箭頭給攪暈,現在他希望你用程式計算出這些念頭中最長的一條因果鏈。將念頭從1到n編號,念頭i 於念頭from i 保證from ...

我的2020 碎碎念

文章想寫很久了,只是一直有好多事。部落格裡的草稿箱也堆了好幾篇。我不是個善於表達的人,多說多錯,盡量少說。自己非常幸運能去data ies實習。記得剛進部門,我mentor向我宣布,因為工作轉移的原因,我們的一整個業務,目前只有他和我倆人,orz。確實沒人,乙個業務4個模組,mentor乙個人頂了三...