天天看点

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这么好用到底能在规划里做什么?