这是第39篇原创文章
“ 也是之前小伙伴后台留言的问题,这里简单讲一讲。”
作为规划务工人员来说,描图画CAD是必不可少的经历,尤其是进了热衷于做城市设计投标的所,湘源控规是必不可少的了。但是湘源控规本身的分析功能很弱,要怎样才能把生成的属性块转成shp导进去GIS做后期分析呢?
其实总体来说还是比较简单的。
01
—
先用FmeInspector找思路
基本上fmeInspector能识别出来的属性都能通过属性暴露实现转化。
湘源控规生成的用地地块都具备指标属性,下图是一个标准的湘源控规的用地填充地块,我们的目标就是把各个地块所有的属性暴露出来。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SYzkDZ4EzY4EjZ2ATM0MjZhVjYmVmZyQDOkBTNmBTZ48CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
先准备两个湘源控规属性块,一个默认,一个炸开,导入FmeInspector中看一下哪个能读出对应的属性。
1、默认生成的湘源控规属性块在FME中识别为autocad_surface实体,未读出属性信息。
2、炸开之后则识别为autocad_hatch实体,其对应属性都在extended_data_list的列表属性下,第一行是属性名,第二行是属性值。
所以就有基本的思路了,先炸开属性块,再想办法把各个地块的列表属性暴露出来,为了节约时间,我们可以只暴露我们常用的几个属性字段。
02
—
搭建简单的模板
我这里用的是比较省事的办法,就是先用AttributeExposer把上图框起来的CAD文件中extended_data_list{}的列表属性暴露出来,再直接用AttributeCreator把对应一个个的属性字段建好,按顺序依次赋值,虽然比较笨,但好在用的转换器不多,一劳永逸。
模板建好后大概是这样:
红框框起来的就是核心的两个转换器,主要耗时的就是AttributeCreator中一个一个手打属性字段名和对应属性值这一步。
这里我做了两个输出端口,一个是导出shp文件(需要注意的是GIS的字段名不能超过10个字母,换算成汉字的话大于等于六个字就会报错,需要自己重命名),一个是导回CAD格式(DWGStyler还挺好用的,直接按下图设置就能再转回cad的hatch填充,不需要像之前那样自己再手打autocad_entity,见GIS入门 | 如何把CAD填充色块转成shp面要素?,但依然存在一个问题是fme转出来的填充色块无法在cad和湘源控规中显示、计算面积,下次再开坑研究一下吧)。
除了这个办法外,尝试着用另一个思路建了下模板,后面发现步骤太多,加上最后还是逃不过手打属性字段名这一步,所以中途就放弃了。
大概思路是这样的:核心是ListConcatenator和AttributeTransposer
ListConcatenator功能是把上一步暴露出来的列表属性聚合到一个字段上,通过一系列清洗,目标是各个地块变成如下图的左侧属性字段名、右侧属性值,再用AttributeTransposer去实现类似excel中的转置功能。
思路是这样,但遇到两个比较大的问题:一是转置完后还是需要手打属性字段名,二是转置后会丢失几何属性,需要另外想办法挂接表或者怎么样来找回来,费时费力,所以后面就放弃了。
03
—
转换后的结果
用第一种思路转换后的结果还是比较紧凑的,各个地块的属性呈横向展开,可以用GIS做进一步分析和研究。
对比下原来CAD中的结果,原本2564个填充都转换出来了,没有遗漏。
至于fme再转出cad后hatch填充面积丢失的问题,先挖个坑吧,下次再更。
以上。
来都来了,关注一下
历史推荐:
FME | 如何抓取公交数据并可视化?
FME | 如何提取地形图dwg中的高程点块参照信息?
FME | POI数据如何聚合到网格尺度以实现数据降维?
交流 | FME在规划项目中的实证应用
解读 | 如何用FME爬取和分析腾讯人口迁徙数据
FME入门 | 如何快速提取地块内建筑量并计算容积率?
FME入门 | FME这么好用到底能在规划里做什么?