1、需求分析

1.shp为原始数据,包含了图形信息和属性信息,可以看到姓名作为挂接项,包含的干扰项目很多,让我们根本没有办法用正则表达式过滤出来

2.xlsx为表格数据,里面包含了我们需要挂接的属性,我们需要将表格的属性通过姓名模糊匹配挂接到shp中。

2、需要工具

完成这个需求,我们需要有fme,以及安装到fme里面的python3.7 pandas包。不会安装的小伙伴可以看我第一期的博客内容,里面有fme安装pandas详细介绍。

3、实现过程

1、核心转换器为pythoncaller,但是因为fme特性的原因,没有办法生成两个接口来分开处理两组数据,所以我们需要用featuremerger来讲属性合并。

用counter造一个随机数来作为关联基础。我们可以看到合并之后属性并不是对应的。

因为这只是简单的将两组数据组合了起来,接下来需要用pandas来进行数据处理。

2、直接这是pythoncalller源码

原理是将我需要挂接的表格数据转换为字典格式,且key值为姓名,value为count的自然数

然后用pandas数据处理三板斧的经典方法apply,将我们的shp属性,按行要素一行一行的输入进去merge_fuc函数中,匹配字典里面的符合项,将字典value值(自然数)匹配出来。然后两组数据都获得了对应的自然数,再通过pandas的merge方法匹配出二维数组,最后将匹配出来的二维数组输出为字段要素。

写出后可以看到属性是挂接上去了。

4、难点分析

这个案例一个包含了三个难点,请教了多位大佬,才将这三个难点解决。同时也感谢fme群的几位大佬的指点,才让我实现了这个案例。

1、如何实现模糊匹配,这也是这个模板的核心所在,使用了re的search方法,通过apply传参逐行查询。

2、pandas的datafrom数据格式如何转换到fme的要素中:

将datafrom格式的数据转换成list格式,然后按个数遍历,然后添加要素。

3、apply方法如何在fme中实现传参数:这其实是这个基础问题,涉及python的类的基础知识,要实现参数的传递,需要在init函数中定义参数,然后必须要有self参数,self指代实例对象,字面意思就是自己本身。

5、总结

不推荐使用这种方法进行模糊匹配,最简便的方法依旧是将数据导入到sql中直接用模糊匹配like来实现。但是该案例体现了pandas在fme数据处理中的强大的一面,如果pandas用的熟练,那么只要是数据,应该都没有什么处理不了的问题了。同时这个代码冗余较多,如果匹配项目多了,还得一个一个添加字段,优势是可以实现图形数据的属性挂接。后续会持续更新fme的一些有用的模板。

fme结合python-pandas实现图形数据和表格数据的模糊匹配挂接相关推荐

  1. python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项

    一.python库camelot安装及使用中的一些注意事项 1)camelot方法有两种解析模式:流解析(stream).格子解析(lattice),其中格子解析能够保留表格完整的样式,对于复杂表格来 ...

  2. [647]python库Camelot从pdf抽取表格数据

    Camelot: 一个友好的PDF表格数据抽取工具 一个python命令行工具,使任何人都能很轻松的从PDF文件中抽取表格数据. 安装 Camelot 安装非常简单! 在安装相关的依赖后,可以直接使用 ...

  3. python读取html文件中的表格数据_Python 读取各类文件格式的文本信息 | doc,excel,html,mht...

    原标题:Python 读取各类文件格式的文本信息 | doc,excel,html,mht 众所周知,python最强大的地方在于,python社区汇总拥有丰富的第三方库,开源的特性,使得有越来越多的 ...

  4. python 提取pdf表格_用Python提取pdf文件中的表格数据

    本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...

  5. Python实现将多个Excel表格数据一键合并到一个表格,轻松提升办公效率!

    老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去. 还好我会Python,分分钟就搞定了,这要是换个不会Python的,不得加班到第二天天亮去了~ 这么好用的技能,必须分享给 ...

  6. kaggle比赛数据_表格数据二进制分类:来自5个Kaggle比赛的所有技巧和窍门

    kaggle比赛数据 This article was originally written by Shahul ES and posted on the Neptune blog. 本文最初由 Sh ...

  7. python pandas excel数据处理_Python处理Excel数据-pandas篇

    Python处理Excel数据-pandas篇 非常适用于大量数据的拼接.清洗.筛选及分析 在计算机编程中,pandas是Python编程语言的用于数据操纵和分析的软件库.特别是,它提供操纵数值表格和 ...

  8. python pandas读取csv_pandas读取csv文件数据的方法及注意点

    pandas是一个高效的数据分析工具.基于其高度抽象的数据结构DataFrame(点击这里了解DataFrame数据结构),几乎可以对数据进行任何你想要的操作. 由于现实世界中数据源的格式非常多,pa ...

  9. python pandas爬取网页成绩表格,计算各个类别学分

    一.以下是个人成绩表格 二.下面是我的程序: # -- coding: utf-8 -- import pandas as pd import csvdef credit_points_sum(df, ...

最新文章

  1. Java学习笔记33
  2. C++学习笔记(四)----关于参数传递(1)
  3. Tomcat7并发和线程数
  4. sqlite3.OperationalError: no such column: **
  5. 95-10-200-启动-结尾
  6. XCode: 如何添加自定义代码片段
  7. IOS多线程实现多图片下载(一)
  8. 安装3dmax2020版本注意事项
  9. Tecplot绘制流体后处理图的问题
  10. 基于大数据的智能交通管理管控指挥平台技术方案
  11. access和filemaker_四个替代微软Access的开源产品
  12. IP地址最后一位斜杠是什么意思?比如192.168.1.10/27?还有IP地址和子网掩码相加得到的网络地址是什么意思
  13. 从Uber和快的、滴滴、易到App对比看人性
  14. (二)硕博生常用的外文文献检索方式推荐
  15. 入华商用四周年,Office 365小程序在路上
  16. 2.4.3 Mybatis 高级查询, 复杂映射, 返回主键, 动态SQL if, set, foreach, 核心配置文件深入,plugins标签, 多表查询, 嵌套查询
  17. 小南再谈Vue(QA)
  18. vba 为excel排序
  19. android 记录血糖的折线图_画画血糖曲线图,你还可稳血糖!快试试
  20. 如何在PPT中实现多张图片叠加在一起,点击消失一张出来下一张的效果

热门文章

  1. OpenXML方式导出word
  2. 透过大型企业成功案例,看 IoT 物联网平台技术选型
  3. C++17 新特性介绍
  4. Android MVP框架MVPro的使用和源码分析
  5. 甲骨文客户端配置 ORALCE PLSQL 远程 连接
  6. inshot怎么转gif_inshot怎么用 教你照片视频制作技巧
  7. Java编程 Javase06
  8. 10a大电流稳压芯片_24V大电流直流稳压电源400V10A线性直流可调电源-山东航能
  9. 山寨版360安全卫士 腾讯电脑管家开源(.NET实现)
  10. BlockChain区块链+IoT物联网的技术结合