作者:谢杨

今年的三调进行的如火如荼,三调的成果数据做完了之后,相信今后很大的工作就是要想办法将三调的成果数据更好的利用起来。而为了更直观的了解到相较于二调,三调的地类变化情况,三调地类变化流量表的制作就很有必要了。近期我就遇到了这么一个需求。

其实地类流量表的制作并不是很复杂的事情,很多方法都能做,我了解到的方法就有,先在arcgis里面做相交,统计出Excel的各个地类的面积,然后再在Excel里面或者通过VB写的小程序对统计好的Excel进行加工填写到标准的模板表里。而这样的办法有一个缺陷就是需要分几步走,可能会用到好几种软件。那么能不能把所有的步骤都融合到一个软件里面,实现“一步到位”的方法呢?答案当然有,而且可能还有很多,而我作为一个FME的技术支持人员,当然思考的就是如何通过FME来实现这个步骤了。

其实整个的流程很简单,就是三调二调的地类图斑,先相交,然后统计相交后的面积,然后再想办法写入到标准的Excel表里面。大致的流程如下:

流程很简单,其实相对困难一点的就是如何想办法将统计得到的数值填入到标准的模板表里面,标准模板表长这样:

大致的填写要求是这样的:

实现步骤

压盖分析

其实这一步要做的就是要用二调的地类图斑来切割三调的地类图斑,并且对分割后的小图斑不仅要有三调的地类名称还得有二调的地类名称。说到这个功能,在FME里面第一时间想到的就是AreaOnAreaOverlayer这个转换器。于是我进行了测试,为了加快速度,用了64位的FME,由于源数据的两个mdb,事先还先将mdb转换成了gdb,模板是这样的:

过了几分钟我的电脑变成了这样的:

电脑资源实在是有限,然后进入了漫长的等待...

1个小时过去了...

2个小时过去了...

3个小时过去了...

在等待的过程中在arcgis里面尝试了一下,标识工具:

测试了之后发现,只需要不到20分钟就能把标识做完,标识后的三调图斑都带了二调地类名称的属性。于是果断放弃了AreaOnAreaOverlayer这个转换器。正好最近学了一点Python的皮毛,决定在FME里面用PythonCaller来调用arcgis的标识工具,调用的方法很简单,arcgis工具箱打开帮助,查看示例代码即可:

这样的话我就只需要在某个路径下生成标识后的shp数据,然后再用FeatureReader转换器去读取这个shp数据进行面积统计即可。实现过程如下:

由于传给标识模块的参数的输出路径必须是存在的路径,所以代码里用了os模块去检查路径是否存在,如果存在删除掉原有的数据,如果不存在新建一个文件夹。

PS:由于我对Python只是懂点皮毛,在调用arcpy的时候经常遇到传参不对的问题,往往都不知道该如何去找错,后来发现一个很好的办法就是在代码里面把所有要传的参数都print出来,这样一目了然。

统计图斑面积

标识做完了之后,现在要做的就是统计各地类的面积,在FME中AreaCalculator转换器进行面积计算,StatisticsCalculator转换器进行统计。原始的二调的各个地类的面积直接读取二调的mdb进行统计,变化后的面积统计用FeatureReader读取上一步生成的shp文件然后再用AreaCalculator转换器进行面积计算,StatisticsCalculator转换器进行统计。统计二调原始的地类面积:

变化后的三调地类面积统计:

二调的地类面积统计后的结果是这样的:

其中DLMC为地类名称字段,_sum字段为该地类对应的面积。变化后的三调图斑统计后的成果为:

其中DLMC为二调的地类名称,DLMC_1为变化后对应的三调地类名称,_sum为对应的面积。

统计的结果得到了,但是现在面临一个问题,在Excel的表格当中,横向为二调的地类名称,竖向为三调的地类名称,那么对于得到的统计信息,我们需要按照表的形式,以二调的地类名称作为字段名称,对应的面积作为值。相当于要将DLMC字段的值生成新的字段名称,FME里面没有可以直接实现的转换器,这个时候又可以用上Python了,把DLMC的值和对应的面积_sum组成一个列表list[],循环去读取list的值生成字段和对应的值,如list[0]为字段名称,list[1]则为该字段对应的值,实现步骤如下:

Pyhoncaller转换器出来的结果如下:

问题又来了,Pyhoncaller生成的属性如果没有在转换器里面设置暴露,那么久并不会出现在属性列表里面,如何批量的暴露字段又成了一个问题,手动一个一个写显得太不智能,于是又想到了一个办法,将模板表读取进来,并且以第10行开始为属性字段名称,读取后的效果如下:

取一条模板的要素和PythonCaller出来的要素进行合并,由于模板的要素有属性表,PythonCaller出来的要素合并后则自动暴露出了相应的属性字段。同样的变化后三调的地类面积也用这样的方式进行,但是可通过xlsx_row_id进行决定填到第几行,而xlsx_row_id可通过读取模板数据的B列与DLMC_1做挂接。所有的数据合并后可用NullAttributeMapper转换器对缺失的字段值进行填0处理。整个的处理步骤如下:

得到的结果如下:

写出数据到Excel模板表

再次查看模板表,发现里面有很多合计的单元格,为了方便起见,直接在模板表里先对合计的单元格填好公式,待其他单元格填入值后合计的值就会自动出现:

通过写模块或者FeatureWriter转换器进行Excel的写出,需要设置的参数有模板文件,以及写入的模式,和开始写的其实行列:

整个模板做完后是这样的:

得到的成果:

总结

通过FME实现了一键式的自动的三调地类流量表制作。其实我也是第一次写出这样的Excel表格,在最终填写的方式的时候纠结了一两天,一直没有找到合适的办法,直到想到了Python。FME并不是万能的,它是数据处理很好的工具,我们不能要求FME能处理任何的数据问题,但是FME有一个很好的点就是它可以通过一些转换器和其他的方法结合起来,比如将FME和Python结合起来,将FME和CAD结合起来通过lisp语句实现一些cad的操作等等。总之,只要你有想法,就能去实现。

FME实现三调地类变化流量表制作相关推荐

  1. 三调地类代码_FME实现三调地类变化流量表制作

    今年的三调进行的如火如荼,三调的成果数据做完了之后,相信今后很大的工作就是要想办法将三调的成果数据更好的利用起来.而为了更直观的了解到相较于二调,三调的地类变化情况,三调地类变化流量表的制作就很有必要 ...

  2. 2019 FME博客大赛 ——FME在三调工作中的应用

    参赛单元:传统GIS数据处理 作者:李芃乐 单位:陕西迪博景源测绘地理信息有限公司 一.前言 很有幸在入测绘这行的时候就接触了强大的FME,回顾FME陪伴我的这四年,从最开始最简单的格式转换,到照猫画 ...

  3. 三调地类图斑统计分析——GP后端实现

    1 需求说明 某研究院拟利用三调地类图斑数据做用地类型分析.需求简单描述为分析某一空间范围内,各类土地的面积. 其他需求: 1. 用户在Web端实现用地类型分析 2. 用户可以通过手绘确定征收.征用范 ...

  4. 三调地类图斑符号化MXD

    自制三调地类图斑符号化MXD

  5. 国土空间调查、规划、用途管制用地用海分类指南(试行)202011 整理的与三调地类的对应关系

    根据<国土空间调查.规划.用途管制用地用海分类指南(试行)202011>整理的地类对应关系: 表格下载地址: 链接:https://pan.baidu.com/s/18iZu38w2wZ7 ...

  6. 地理建模---------三调地类批量筛选----1

  7. ArcGIS三调地类转三大类

    农用地: DLBM in ('0101','0102','0103','0201','0201K','0202','0202K','0203','0203K','0204','0204K','0301 ...

  8. 三调 图斑地类面积_国土三调攻坚冲刺,大疆无人机为调查举证提供加速度

    第三次全国土地调查(国土三调)已进入实地举证核查的攻坚阶段,大疆无人机解决方案正在辅助各地进行外业图斑举证工作.从导入图斑.自动规划航线,到举证拍摄.成果 DB 包生成.上传国土调查云平台,一体化工作 ...

  9. 三调 图斑地类面积_收藏 | “三调数据”与国土空间规划用地对接的70个技术问题...

    " 三调数据作为国土空间规划的基础,在实际规划中,三调的数据与国土空间规划数据的对接是我们日常经常碰见的问题,以下是总结的常见的70个技术问题,希望对大家有帮助. 一. 基础类 Q 问题1: ...

  10. 2021FME博客大赛 —— FME在国土二调地类净面积计算中的应用

    作者:韦前 摘要:国土二调技术规程决定了国土二调数据库的结构,分成DLTB.XZDW和LXDW三个图层,也是为后期计算地类净面积埋下了"地雷",特别是在项目范围线与二调图斑产生分割 ...

最新文章

  1. python函数装饰函数_Python精进-装饰器与函数对象
  2. 【BZOJ3196】Tyvj 1730 二逼平衡树
  3. 最详细的Vue Hello World应用开发步骤
  4. 为DataList和GridView内容项添加序号
  5. Truebine聚合监控
  6. webpack打包原理
  7. Spring cloud Gateway(二) 一个Http请求的流程解析
  8. 00.Maven简介
  9. 【车间调度】基于matlab模拟退火算法求解单约束车间流水线调度问题【含Matlab源码 1457期】
  10. java7 新特性官方介绍_java7 新特性 总结版
  11. eclipse windowJAVA版64位安装教程
  12. python矩形法计算定积分_矩形、梯形法计算定积分的黎曼和
  13. 厉害了!百度智能云NIRO Pro智能机器人半年内连获三项产品设计大奖
  14. mac 更新系统后 idea 意外退出
  15. unity实现游戏中拍照功能(自动生成小照片)
  16. 网站推荐:快速查询 “中国传统配色” 的色值和色名
  17. 18、try...catch
  18. MTK虚拟sensor梳理
  19. [工业互联-1]:工业互联全局概述
  20. 360 2015校园招聘

热门文章

  1. 基于JSP+Servlet+MySQL的在线问卷调查系统(附论文)
  2. 【Get Up&Move】MMD镜头+动作打包下载.zip
  3. chrome浏览器最小字体大小限制的解决方案
  4. 戴尔R730服务器,U盘安装服务器阵列(raid)卡驱动,识别硬盘。
  5. checkbox在ftl文件的使用
  6. vim 配置快捷键映射
  7. PDF加密如何解除?教你2个PDF解密方法
  8. 系统集成项目管理工程师计算题(进度管理总浮动时间、自由浮动时间、工期)
  9. URAL 2037 Richness of binary words
  10. js获取屏幕宽度方法大全