CAD扩展属性的提取--FME方式
一、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{} application_name:south
extended_data_list{} string:
extended_data_list{} application_name:PDJB
extended_data_list{} string:
在这里:
extended_data_list{0} application_name:south, south表示转换后的字段名;
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方式的更多相关文章
- FME中Cass扩展属性转Shp的方法
问题:真受不了CAD中的注记,只能方便显示,难于数据交互.好在Cass把属性信息基本写在扩展属性中,但显示又成问题了.此事难两全!我们通过查看实体属性,需要把宗地界线的扩展属性提取出来.即组码为-3, ...
- CAD增强属性块的还原(转)
来自:http://blog.3snews.net/space.php?uid=13924959&do=blog&id=70174 作者:毛毛虫 Demo下载:CAD增强属性块的还原 ...
- 【C#】使用IExtenderProvider为控件添加扩展属性,像ToolTip那样
申明: - 本文适用于WinForm开发 - 文中的“控件”一词是广义上的说法,泛指包括ToolStripItem.MenuItem在内单个界面元素,并不特指继承自Control类的狭义控件 用过To ...
- ADO.Net(四)——扩展属性和配置文件应用
一.扩展属性 处理:有外键关系时将代号化信息处理成原始文字,让用户可看懂的(粗略解释) 利用扩展属性 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展 ...
- SQLServer错误:过程 sp_addextendedproperty,第 xxx 行对象无效。'dbo.xxx.xxx' 不允许有扩展属性,或对象不存在。
上传数据库到虚拟主机,在执行SQL脚本的时候出现以下的错误: 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,第 37 行 对象无效.'dbo.Messag ...
- 关于ES6扩展属性
ES6 let和const let命令 只在代码块作用域内有效 不存在变量提升(不能在申明之前赋值) 暂时性死区(在区域内不受外部变量影响) 不允许重复申明(在相同代码块区域内) 块级作用域 let为 ...
- PowerDesigner建数据库模型增加自定义扩展属性
PowerDesigner自7.x新增加一个特性,就是允许用户通过扩展模型的方式扩展模型的属性,但到底怎用一直搞不清楚.今天和同事商量准备直接在程序的Metadata信息实现上直接使用pdm时,我们需 ...
- 过程 sp_addextendedproperty, 对象无效。不允许有扩展属性,或对象不存在。
过程 sp_addextendedproperty, 对象无效.不允许有扩展属性,或对象不存在. 首先这个是创建数据表的SQL,有Power Designer创建模型,直接生成的创建SQL会出现的问题 ...
- Kotlin入门(33)运用扩展属性
进行App开发的时候,使用震动器要在AndroidManifest.xml中加上如下权限: <!-- 震动 --> <uses-permission android:name=&qu ...
随机推荐
- vs 连接过程报错 dll 分析 ------- DLL动态链接库
1:编译成功,说明代码没有问题了2:连接报错,说明 exe 在查找dll 的入口地址过程,找不到合适的信息,这些信息保存在 dll 对应的 *.lib 文件里面 说明:exe如果生成成功了lib 这 ...
- java虚拟机规范(se8)——java虚拟机结构(一)
本文翻译自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 第二章 虚拟机结构 本文档描述了一个抽象的虚拟机规范,并不描述 ...
- yum安装tomcat
http://www.cnblogs.com/liaolongjun/p/5638740.html http://www.awspack.com/os/linux/yum-install-tomcat ...
- iOS企业包安装注意事项详解(解决提示iPhone未受信任的问题)
请在Safari浏览器上打开该页面才能正常安装. 如果您是微信中查看该页面,请点击右上角,在弹出的菜单中选择“在Safari中打开” 对于iOS版本为7.X和8.X的用户,直接点击安装即可(此处为it ...
- #JS 获取屏幕分辨率、网页可见区域等
window.screen document.body <script type="text/javascript"> function getInfo(){ var ...
- [转] 在安卓设备上使用 Chrome 远程调试功能
你的网页内容在移动设备上的体验可能和电脑上完全不同.Chrome DevTools 提供了远程调试功能,这让你可以在安卓设备上实时调试开发的内容. 安卓远程调试支持: 在浏览器选项卡中调试网站. 在原 ...
- shell学习(一)
一.免密交互 --stdin 1.从标准输入读取字符串 如:passwd --stdin heruguo246 [root@localhost mnt]# ---输入了修改heruigu ...
- 【LOJ】#2181. 「SDOI2015」排序
题解 还以为是啥毒瘤题 然后是个搜索题 复杂度算起来挺大 然后跑起来就连0.1ms不到= = 就是从大到小进行每种操作,搜出来一种操作就乘上一个操作数的阶乘就行 如果现在进行的操作操作\(2^i\)那 ...
- 【AtCoder】ARC093
C - Traveling Plan 相当于一个环,每次删掉i点到两边的距离,加上新相邻的两个点的距离 代码 #include <bits/stdc++.h> #define fi fir ...
- HDU - 1525
题意:给你两个数,a,b,有两个人轮流进行一次操作, 每次操作可以将大的数减去k倍的小的数,最后不能操作的人输了,问你谁赢了. 思路:我们可以用辗转相除法求出对于每一个状态可以改变几次,这样问题就变成 ...