用纯fme批量生成界址点成果表(模板格式全部自拟)

前言:今日悟空分享一期fme干货教程,用fme来从地籍图上面提取宗地、界址等各种信息并批量导出为界址点成果表,其中涉及了cass数据的基础转换分析、Excel表格的高阶处理等核心技术、以及fme的几个底层逻辑。还希望各位小伙伴能不惜自己的关注和点赞。

一、需求分析

首先我们需要从cass图中提取宗地线,然后获取界址信息、边长信息 、宗地面积、自然幢面积等信息。然后拟定一个界址成果表的模板,将信息通过模板导出为界址点成果表。当然这些在南方cass中有自带的界址点成果表生成工具,但是一旦涉及到界址点成果表模板微调,南方cass就不能支持了。比如下表头内的信息需要替换的时候,南方cass就不能满足我们的需求了。

用纯fme批量生成界址点成果表(模板格式全部自拟)_第1张图片

 二、难点分析以及解决方案

1、表头信息如何像邮件合并一样完成替换

这里需要用到一个核心的转换器featurereader,将模板用reader进来,通过合并发起者信息。将要素数据和模板数据信息合并。

用纯fme批量生成界址点成果表(模板格式全部自拟)_第2张图片

 可以看到自然幢面积等信息全部已经挂接到一个表上面。用纯fme批量生成界址点成果表(模板格式全部自拟)_第3张图片

 然后我们只需要用StringReplacer转换器,将前面的设置的特征字符替换成字段属性,然后导出表

格的时候,将模板设置进去,就完成了第一个难点的突破。

用纯fme批量生成界址点成果表(模板格式全部自拟)_第4张图片

 2、界址信息抓取

这个就是涉及到对cass属性结构的认识了,一般宗地线都在jzd图层,里面扩展属性储存在autocad_extended_data_list{}中,我们只需要将扩展属性暴露出来,就可以获取到里面的宗地权利人等信息了。然后就是界址点信息提取,这里我们需要将界址点打散,获取坐标信息,并按宗地代码计数,然后统计获得界址点号最大的那个,然后将最大的号设置为j1。用纯fme批量生成界址点成果表(模板格式全部自拟)_第5张图片

 这样就成功抓取到了界址信息

用纯fme批量生成界址点成果表(模板格式全部自拟)_第6张图片

 3、合并单元格处理

通过对界址点成果表模板的分析,我们可以知道fme对于合并单元格,是将合并单元格打散并赋值相同内容的信息,那么将数据导入进合并单元格也只需要提取将数据克隆出来,就能实现合并单元格的导入了。所以我们需要用到clone转换器

 用纯fme批量生成界址点成果表(模板格式全部自拟)_第7张图片

 将我们需要导入的信息复制为双份 ,然后再写模块设置好模板和扇出。就能够实现,邮件合并和字段信息导入两个功能。

这里附上fme模板全貌,因为特殊需求增加了几个功能,比如图斑号相同但是有多条宗地线的情况,我加了个自动编码功能。这里就没做详细阐述。

用纯fme批量生成界址点成果表(模板格式全部自拟)_第8张图片

 三、效果展示用纯fme批量生成界址点成果表(模板格式全部自拟)_第9张图片

 用纯fme批量生成界址点成果表(模板格式全部自拟)_第10张图片

 总结

这套模板的价值不在于解决了界址点成果表输出的问题,而是解决了批量制作Excel复杂表格的问题,成果解决了合并单元格,扇出,动态数据导入等问题,需要该套模板的小伙伴可以私聊我获取,当然不是免费,还望理解。其实还可以用python+fme来做,这是我这边觉得fme已经几乎能满足Excel的全部需求了,并且维护起来也比代码方便,所以就不是很推荐用python来做。

你可能感兴趣的:(fme,etl)