前言:今日悟空分享一期fme干货教程,用fme来从地籍图上面提取宗地、界址等各种信息并批量导出为界址点成果表,其中涉及了cass数据的基础转换分析、Excel表格的高阶处理等核心技术、以及fme的几个底层逻辑。还希望各位小伙伴能不惜自己的关注和点赞。
一、需求分析
首先我们需要从cass图中提取宗地线,然后获取界址信息、边长信息 、宗地面积、自然幢面积等信息。然后拟定一个界址成果表的模板,将信息通过模板导出为界址点成果表。当然这些在南方cass中有自带的界址点成果表生成工具,但是一旦涉及到界址点成果表模板微调,南方cass就不能支持了。比如下表头内的信息需要替换的时候,南方cass就不能满足我们的需求了。
二、难点分析以及解决方案
1、表头信息如何像邮件合并一样完成替换
这里需要用到一个核心的转换器featurereader,将模板用reader进来,通过合并发起者信息。将要素数据和模板数据信息合并。
可以看到自然幢面积等信息全部已经挂接到一个表上面。
然后我们只需要用StringReplacer转换器,将前面的设置的特征字符替换成字段属性,然后导出表
格的时候,将模板设置进去,就完成了第一个难点的突破。
2、界址信息抓取
这个就是涉及到对cass属性结构的认识了,一般宗地线都在jzd图层,里面扩展属性储存在autocad_extended_data_list{}中,我们只需要将扩展属性暴露出来,就可以获取到里面的宗地权利人等信息了。然后就是界址点信息提取,这里我们需要将界址点打散,获取坐标信息,并按宗地代码计数,然后统计获得界址点号最大的那个,然后将最大的号设置为j1。
这样就成功抓取到了界址信息
3、合并单元格处理
通过对界址点成果表模板的分析,我们可以知道fme对于合并单元格,是将合并单元格打散并赋值相同内容的信息,那么将数据导入进合并单元格也只需要提取将数据克隆出来,就能实现合并单元格的导入了。所以我们需要用到clone转换器
将我们需要导入的信息复制为双份 ,然后再写模块设置好模板和扇出。就能够实现,邮件合并和字段信息导入两个功能。
这里附上fme模板全貌,因为特殊需求增加了几个功能,比如图斑号相同但是有多条宗地线的情况,我加了个自动编码功能。这里就没做详细阐述。
三、效果展示![](https://i-blog.csdnimg.cn/blog_migrate/7a2388b3928352033367770adbd265e0.png)
总结
这套模板的价值不在于解决了界址点成果表输出的问题,而是解决了批量制作Excel复杂表格的问题,成果解决了合并单元格,扇出,动态数据导入等问题,需要该套模板的小伙伴可以私聊我获取,当然不是免费,还望理解。其实还可以用python+fme来做,这是我这边觉得fme已经几乎能满足Excel的全部需求了,并且维护起来也比代码方便,所以就不是很推荐用python来做。