天天看點

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

這是第39篇原創文章

“ 也是之前小夥伴背景留言的問題,這裡簡單講一講。”

作為規劃務勞工員來說,描圖畫CAD是必不可少的經曆,尤其是進了熱衷于做城市設計投标的所,湘源控規是必不可少的了。但是湘源控規本身的分析功能很弱,要怎樣才能把生成的屬性塊轉成shp導進去GIS做後期分析呢?

其實總體來說還是比較簡單的。

01

先用FmeInspector找思路

基本上fmeInspector能識别出來的屬性都能通過屬性暴露實作轉化。

湘源控規生成的用地地塊都具備名額屬性,下圖是一個标準的湘源控規的用地填充地塊,我們的目标就是把各個地塊所有的屬性暴露出來。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

先準備兩個湘源控規屬性塊,一個預設,一個炸開,導入FmeInspector中看一下哪個能讀出對應的屬性。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

1、預設生成的湘源控規屬性塊在FME中識别為autocad_surface實體,未讀出屬性資訊。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

2、炸開之後則識别為autocad_hatch實體,其對應屬性都在extended_data_list的清單屬性下,第一行是屬性名,第二行是屬性值。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...
python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

是以就有基本的思路了,先炸開屬性塊,再想辦法把各個地塊的清單屬性暴露出來,為了節約時間,我們可以隻暴露我們常用的幾個屬性字段。

02

搭建簡單的模闆

我這裡用的是比較省事的辦法,就是先用AttributeExposer把上圖框起來的CAD檔案中extended_data_list{}的清單屬性暴露出來,再直接用AttributeCreator把對應一個個的屬性字段建好,按順序依次指派,雖然比較笨,但好在用的轉換器不多,一勞永逸。

模闆建好後大概是這樣:

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

紅框框起來的就是核心的兩個轉換器,主要耗時的就是AttributeCreator中一個一個手打屬性字段名和對應屬性值這一步。

這裡我做了兩個輸出端口,一個是導出shp檔案(需要注意的是GIS的字段名不能超過10個字母,換算成漢字的話大于等于六個字就會報錯,需要自己重命名),一個是導回CAD格式(DWGStyler還挺好用的,直接按下圖設定就能再轉回cad的hatch填充,不需要像之前那樣自己再手打autocad_entity,見GIS入門 | 如何把CAD填充色塊轉成shp面要素?,但依然存在一個問題是fme轉出來的填充色塊無法在cad和湘源控規中顯示、計算面積,下次再開坑研究一下吧)。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

除了這個辦法外,嘗試着用另一個思路建了下模闆,後面發現步驟太多,加上最後還是逃不過手打屬性字段名這一步,是以中途就放棄了。

大概思路是這樣的:核心是ListConcatenator和AttributeTransposer

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

ListConcatenator功能是把上一步暴露出來的清單屬性聚合到一個字段上,通過一系列清洗,目标是各個地塊變成如下圖的左側屬性字段名、右側屬性值,再用AttributeTransposer去實作類似excel中的轉置功能。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

思路是這樣,但遇到兩個比較大的問題:一是轉置完後還是需要手打屬性字段名,二是轉置後會丢失幾何屬性,需要另外想辦法挂接表或者怎麼樣來找回來,費時費力,是以後面就放棄了。

03

轉換後的結果

用第一種思路轉換後的結果還是比較緊湊的,各個地塊的屬性呈橫向展開,可以用GIS做進一步分析和研究。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

對比下原來CAD中的結果,原本2564個填充都轉換出來了,沒有遺漏。

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

至于fme再轉出cad後hatch填充面積丢失的問題,先挖個坑吧,下次再更。

以上。

來都來了,關注一下

python 如何實作shp檔案如何轉化為dwg檔案_FME | 如何将湘源控規生成的屬性塊轉換為shp?...

曆史推薦:

FME | 如何抓取公交資料并可視化?

FME | 如何提取地形圖dwg中的高程點塊參照資訊?

FME | POI資料如何聚合到網格尺度以實作資料降維?

交流 | FME在規劃項目中的實證應用

解讀 | 如何用FME爬取和分析騰訊人口遷徙資料

FME入門 | 如何快速提取地塊内建築量并計算容積率?

FME入門 | FME這麼好用到底能在規劃裡做什麼?