基于FME的水库功能分区生态红线批量处理方案(从文本到gdb)

作者:凡江林   QQ:564438737

 项目背景

2017年7月,环境保护部办公厅、发展改革委办公厅共同印发《生态保护红线划定指南》(环办生态[2017]48号)。

(1)问题描述

部门同事接领导任务,我部门需要提交全省各大中型水库的水功能分区红线gdb。原始数据为xls表格文件,初步整理后的格式如图(1)所示。


图(1)

最终需要的成果如图(2)所示。

图(2)

(2)流程思路

         原始收集的文本点数据,里面涉及到点的空间坐标。部分水库空间坐标表示为西安80的投影坐标系(包括有带号与无带号),部分水库空间坐标表示为西安80对应的经纬度(经纬度也涉及到部分为度分秒的表示、部分为十进制度的表示)。

        为了抓住重点统一思路,我们假定所有的原始数据,都经过一定的处理,形成如图(1)所示的原始数据(对于其他形式的原始数据,可以通过FME转换成图(1)所示的形式。)

        在基于图(1)文本的基础上,Arcmap手工思路为:文本点数据坐标=>空间点数据要素=>空间线数据要素=>空间面数据要素=>编辑相关属性。一人一周的工作量平均为2个县的水库。贵州省涉及到80多个县级行政区划,部分县涉及到若干大中型水库。保守估计,基于Arcmap的手工作业方式,至少需要40周(一人)。(说明:工作量估计可能会有出入,但据了解,工作量确实很大。。。很大。。。)

       图(3)是基于FME的设计流程图。

aaaaaaa

图(3)

下面,对图(3)的流程图进行简单的解读。<All>读取xls文本后=>利用VertexCreator创建点要素=>利用PointConnector连接点要素为线=>利用LineCloser闭合线为面=>利用Clipper和Tester实现重叠区裁剪并去重=>利用AttributeManager实现属性管理以及计算面积=>利用Counter实现计数统计=>利用show实现显示(可以基于此导出到gdb)。

以上流程思路中,难度较大的是Clipper裁剪重叠区并去重的功能,Clipper转换器的高级用法,可以参考我写的另一篇博文:

Clipper转换器使用探索(关于&amp;quot;FME 模板兴趣班第十八期——面遮挡处理 &amp;quot;)

      基于样本数据,最终的运行结果,如图(4)所示。

图(4)

(3)探索结论

     至此,完成了基于FME的水库功能分区生态红线批量处理方案(从文本到gdb)。在此分享思路,供有相关需求的专业人士参考(该流程还有若干可以改进的地方,比如,基于不同形式的原始数据,提供相应的支持;成果直接输出到gdb文件,等等。)

同理,基于相同的思路。可以利用Arcpy或者ArcEngine实现相似的功能。在此,仅提供实现的流程思路,不提供该流程的具体参数的具体设置。

基于这样的思维框架,把原始的水库文本数据,整理成对应的标准文本格式后,可以利用FME的批量处理功能,实现水库功能分区生态红线的批量处理。该方案能够大大提高数据处理的效率与质量,节约数据处理的成本与时间。

(限于作者的学识和经验,定有不少疏漏和不当之处,甚至是错误也在所难免,恳请读者和同行批准指正!)




转载自:https://blog.csdn.net/fanjianglin/article/details/80779061

You may also like...