2020FME博客大赛——FME在GIS中的椭球面积计算和高斯反算

作者:黄康江

单位:贵州省国土资源勘测规划研究院

 

一、概述

在接触FME之前我们处理或者是分析数据都是经过编写程序来实现,而且每一种类型的数据都有不同的技术手段来解决,比如一般的数据库查询统计大都是要懂SQL语言,针对空间数据库的分析则需掌握各类的GIS平台的操作或二次开发的方式来实现,实现效率低,入门成本高,需要掌握多种技术,针对非GIS专业或者是非开发人员处理这类数据比较费时费力,特别是在数据处理和分析这个行业。领导要求越来越高,希望招聘到开工资低,做事高效又靠谱,早上提需求下午就能出结果的牛人。总之一句话,又快又准确的得到结果,FME是最好不过的一个工具,接触这个工具后发现它的强大,几乎能处理目前工作中所遇到的问题,正如现在做空间数据叠加分析的时候面积需要重新计算,而能支持椭球面积计算的平台较少,不能灵活计算,有些项目数据分析需要相对准确的面积计算,而面积计算所最常用的一个功能,基于种种需求并充分利用FME 带来的优势和便利将椭球面积计算方法做成一个自定义转换器提供工作中使用。

 

 

二、解决方案

1、理论知识分析

首先在需要具备基本的地理信息理论知识,GIS图形中的坐标点常用大地坐标系和平面直角坐标系这两个格式存储顶点的坐标,还有其他知识点比如投影信息、椭球参数、GIS常用的数据格式等等。专业的知识点很深,对于我这样半路出来才掌握一点眉毛的就不敢再多介绍,这里有一个即简单有迷惑的概念,就算我们在计算椭球面积的时候其实使用的是经纬度值,也就是常说的大地坐标,而平面直角坐标系是把表示在椭球面上的经纬度投影到一定的平面表示。如果是计算平面面积的话,直接用平面直角坐标系的十进制值来套用数学公式的面积就可以求出,而椭球面积就不能直接用经纬度来套用数学公式求面积,总之一句话,椭球面积对应的经纬度,平面面积对应平面直接坐标值,遇到平面直角坐标值需要计算椭球面积的时候就需要用到高斯反算方法先将坐标值转化为经纬度表示。

那么我们在进行计算需要哪些公式呢,其一是高斯反算公式,其二是椭球面积计算推导公式,这两个公式在相关的三调技术规程上都有比较详细的写出。以下为椭球面积推导公式:

 

高斯反算推导公式:

 

更详细的参数说明可以去看这方面的资料,这里只作为引导而引入的,好了,现在具备以上的相关知识后,可以开始着手整理实现的思路了,现在的问题是怎么利用FME实现这些计算,当然是需要具备一定的FME使用基础,了解常用的FME转换器,这里描述一下我所实现的思路。

首先提取GIS图形顶点坐标值并拼接成需要的字符串格式,同时要识别出图形的内环(岛洞)的情况;其次就算经过判断坐标顶点值是否是平面直角坐标值,如果是就调用高斯反算公式进行坐标转换成经纬度值;最后经过椭球面积公式进行计算面积,这里需要特别注意的是内环,一个图形中可能包含多个内环,所以计算面积的时候需要用外环面积-n*内环面积=椭球实际面积。所以一个图形需要拆分出来内环和外环分别计算每个环的面积最后减去即可得到。

2、具体设计实现

1、先给每个要素增加一个序号,然后使用DonutHoleExtractor转换器分离内环和外环,如图:

2、分别拼接外环和内环坐标点字符串,OuterShell表示外环输出的图形,然后拼接成格式:x,y|x1,y1|x2,y2...等格式字符串,Hole出来的是一个集合,此处处理输出的集合成如格式:x,y|x1,y1|x2,y2;x3,y3|x4,y4…每一个分号表示一个环,如图所示:

3、然后将外环和内环顶点坐标字符串拼接到一起,这里就使用到上边第一步增加的序号来关联分开的内环和外环,使用FeatureJoiner做关联拼接,_innerId则是第一步Counter转换器增加的序号列,转换器设置如下

4、重新拼接成指定的字符串格式,将内环坐标字符串和外环字符串拼接,每个环的拼接以分号(;)区分。

5、使用PythonCaller进行高斯反算处理,由于考虑处理效率问题,因此借用python来做计算,如图:

6、从高斯反算出来的结果然由传入到pythonCaller转换器进行椭球面积公式计算:

7、最后过滤中间临时增加的变量,保留需要的属性值即可,如图所示:

8、完整自定义椭球面积计算转换器流出如图所示:

 

三、实现成果

接下来对定义的转换器进行面积测试看效果,这里你可能会看到有两个分支数据流,是因为一个分支是完整封装椭球面积计算出结果,另外一个所分别从高斯反算然后在进行面积计算,我同时把这两个单独做成两个独立的转换器

来说明并且提供需要的时候使用,首先看完整使用效果如下:

椭球面积计算转换器参数设置如下:

然后使用FME自带的面积计算转换器做对比看效果:

从以上两个面积结果可以知道,两个面积计算相差并不大,而我们使用椭球面积计算主要是在某个场合下要求面积比较精准,而不必用专门的软件平台才能计算,自己就可以随算随得。

四、结语

在此自己有幸能够接触到这么好用又高效的数据处理分析工具,虽然接触FME没多久,真正用能它来分析数据也就半年时间,但是很容易就可以入手使用。FME不仅功能强大,几乎各行业都能用得到,只要是和数据有关的都可以用,以前处理数据特别是和数据库有关的唯一想得到的就算需要编写程序来实现,要么就是用SQL脚本,但是对于数据加工的写程序来实现就很繁琐,甚至有困难。现在只要涉及处理都会优先考虑使用FME实现,真的很便捷高效,对于老板想要招低工资,活路多,做得快;而员工想要高工资,活路少,离家近的人,这个工具能助你实现!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值