1. 程式人生 > >CAD擴展屬性的提取--FME方式

CAD擴展屬性的提取--FME方式

根據 play 思路 baidu tail user photos 數據 要求

一、CAD的擴展屬性

了解一下CAD的擴展屬性方式,CAD的擴展屬性包括二類:

基於CAD二次開發的軟件產品(例如南方cass),其擴展屬性是附屬在圖形(點、多段線、註記、面)上面的,它是以XRecord數據容器的形式,以實體級字典的形式存放,此類擴展方式比較常見;

還有一類比較特殊的,就是此擴展屬性是基於塊參照的形式展示的(即屬性塊),它的表現形式比較特殊,它的實體是一個快參照,顯示內容根據不同的屬性值而不同。示例如下(此對象的顯示內容受【地塊編號】和【用地代碼】的屬性字段值控制,修改此值後,塊參照顯示會自動更新)。

針對這兩種類型的擴展屬性的讀寫,FME都是支持的。

前一種方式,FME的分析提取屬性可以在網上搜索的相關的文章,接下來的章節會著重介紹。

針對後一種類型的拓展屬性,可使用ArcGIS也可以直接將其提取到圖層的表字段中。但是FME提取的時候會有所不同,首先,在提取數據的時候需要註意提取參數的設置。

技術分享圖片

此時,FME提取的是此塊參照的中心點,並且附帶塊參照的名稱和編號,這樣設置可以更精確的提取塊信息。塊參照的屬性將以list的形式展示(如下,第一個屬性的信息可以通過fme_attrid_info{0}.field_name和fme_attrid_info{0}.field_value):


技術分享圖片

通過暴露以上的屬性,然後通過Attributerename轉換器將fme_attrid_info{N}.field_value重命名,就可以依次獲得相應的屬性字段信息。


以上就是關於CAD數據的擴展屬性的分析。

二、CAD二次開發 XRecord實體級數據的提取

這裏主要用到FME的數據轉換功能,即把CASS的擴展屬性不丟失轉換到ARCGIS的字段中。

2.1 CASS的擴展屬性的存儲形式

先看下下面這組代碼

("south" (1000 . "310000")) 對應圖斑屬性編碼“310000”;

("TBBH" (1000 . "7"))對應圖斑號“7”;

("DLDM" (1000 . "111")) 對應地類號;

("QSXZ" (1000 . "集體"))("ZYFS" (1000 . "")) 、("SHI" (1000 . "惠州")) ("XIAN" (1000 . "惠陽")) ("XIANG" (1000 . "大亞灣")) ("CUN" (1000 . "")) ("ZU" (1000 . "")),

分別是權屬性質,占用方式,市,縣,鄉鎮,村,組等CASS的字段名縮寫。

2.2 FME Universal Viewer打開CAD

FME2011最新的版本可以支持CAD幾類不同的版本:從早期的Release9一直到現在Release2010,默認的創建新目標數據的版本為CAD2007的版本。

若在寫目標數據集時,不確認原始數據CAD的版本信息,但又新目標數據文件的版本和源數據版本一致時,可以在加載寫入數據文件時設置參數(file Contents的2項內容,選擇模版文件為源數據,然後設置CAD版本為最後一項:same_as_template)。

技術分享圖片

用FME Universal Viewer打開CAD格式的圖斑文件查看屬性的存放方式。

技術分享圖片

可以在右邊的屬性欄看到如下信息:

extended_data_list{0} application_name:south
extended_data_list{1} string:310000
extended_data_list{10} application_name:PDJB
extended_data_list{11} string:

在這裏:

extended_data_list{0} application_name:southsouth表示轉換後的字段名;

string:310000是對應的字段內容。偶數為字段名,奇數為字段內容,一會在轉換連接時用到。清楚了CAD的數據屬性後,再用FME來轉換就容易了。

2.3 FME轉換的過程思路

用FME加載DWG格式的圖斑數據,記得轉換後的格式為SHP。

FME Universal Viewer可以看到extended_data_list共有“0-33”一起34個,在下圖中找到extended_data_list{} 設置如下,數量是34。

技術分享圖片

因為只轉換面,因此只保留DLJ_polygon,其他刪除不用。

看下圖,點開DLJ_polygon右上角,再點開中間菜單“user attributes”,建字段。設置字段名,類型,寬度。我這裏全用的是字符型。

技術分享圖片

點確定後,進行連接。再看回第二步,看如下信息:

extended_data_list{0} application_name:south

extended_data_list{1} string:310000

extended_data_list{10} application_name:PDJB

extended_data_list{11} string:

字段名已建好,因此只把字段內容連接到對應的字段名上,就OK了。

偶數對應字段名,奇數對應字段內容

看圖解說如下:

技術分享圖片

連接完成後,點擊運行,選擇保存路徑。

技術分享圖片

4.打開ARCGIS,加載轉換後的數據,可以看到內容還不標準,修改一下就完美了。

打開編輯,替換“string:”和“real:”“16Bit_integer:”為空後,完全符合要求了。

看圖示:

技術分享圖片
保存編輯,完成操作。

參考文章

怕冷的企鵝,FME對CAD擴展屬性的讀寫, 2011-04

醉意人間南方CASS土地調查圖斑屬性完美轉SHP--適用於其他CAD擴展屬性轉SHP,2010-8

CAD擴展屬性的提取--FME方式