目录
在使用CAD相关软件作图中,通常会将CASS码、层数、宗地代码,宗地名称等属性写入dwg的扩展属性中,那么在后期需要将dwg数据转换成shapefile、gdb、mdb等数据格式时,经常需要提取扩展属性信息。关注薇信工众号:“GIS工具乐园”,回复“FME”,获取模板下载链接。
本工具基于FME2020.2开发,使用前请自行安装FME2020.2及以上版本的FME软件。
☛ FME系列视频教程推荐 ☚
下面将详细介绍如何使用FME软件提取dwg扩展属性,本文以提取CASS码为例,提取其他扩展属性的方法相同,可以此为参照。先来看看工具的CASS码最终提取成果。关注微行公众号:“GIS工具乐园”,持续更新开发技巧分享哦。
CASS码提取成果
一、dwg扩展属性的存储
要从dwg中提取扩展属性,必须要先了解扩展属性dwg中是如何存储的。这里准备一份测试数据,并使用FME读取,从下图中可以看到,dwg扩展属性存储在名为“autocad_extended_data_list{}”的列表中,并且列表中的第二项即为CASS码。但是因为在实际的作业过程中,可能使用过多个软件处理过dwg,CASS码所在扩展属性列表中的索引位置并不相同。要想做一个通用的CASS码提取工具,而不是每次都得先观察确定CASS码的索引,那么关键在于动态获取CASS码准确的列表索引。
dwg扩展属性的存储情况
二、dwg扩展属性列表规律及提取思路
经过本人对大量dwg的扩展属性研究发现,各个生成处理dwg数据软件的厂商,在将自身特定的属性写dwg扩展属性列表时,一般都会先写入本软件固定的标识,然后再接着写入目标属性。根据这一特点,就有办法做一个通用的提取CASS码的FME工具了。即首先搜索CASS码的标识,获取标识的索引,然后通过CASS码索引与标识索引的关系,计算出CASS码索引,最后根据CASS码索引提取到CASS码。
三、FME工具实现
1.读取dwg
使用FME的读模块,读取dwg
2.暴露扩展属性列表
暴露dwg的扩展属性列表autocad_extended_data_list{},如下图所示。
暴露扩展属性
3.搜索CASS码标识索引
使用ListSearcher转换器搜索标识“application_name:SOUTH”的索引。如下图所示。
提取标识索引
4.计算CASS码索引
通过观察可知,CASS码索引为标识索引加一。通过AttributeManager转换器进行计算。
计算CASS码索引
5.获取CASS码初步值
通过AttributeManager转换器,新建“CASS码”字段,并从autocad_extended_data_list{}列表中通过索引获取CASS码初步值。
获取CASS码
下面看一下提取到的CASS码初步值,可以看到,此时的CASS码的前面多了一段“string:”字符串,那么我们需要将这一段字符串去掉。
CASS码初步值
6.获取CASS码最终值
通过观察,可使用AttributeSplitter转换器通过“:”字符对CASS码初步值进行分割成列表,然后获取列表的第二个值即可。下面是获取过程
分割CASS码
获取CASS码最终值