2020FME博客大赛——基于FME实现遥感影像坐标系的校正

作者:暂时匿名

 

1前言

很有幸在我负责单位地图数据生产工作的时候接触到了强大的FME软件,自接触到FME以来,我极力在单位向身边同事推广FME软件,以至于还在单位向同事做了一次关于FME软件的技术培训。目前,我们的数据生产已经离不开了FME软件,矢量数据的拼接、室内地图的数据处理、POI数据融合、十一级地址数据生产、三维网优数据格式转换等等这些复杂繁琐的工作均已实现了FME模板的自动实现,效率获得了数倍、几十倍甚至上百倍的提升,同时也给数据生产带来巨大的便捷。基于FME软件的工具开发已经把我们原先枯燥繁琐的数据生产变得简单、高效、便捷、灵活、有趣。

在工作中经常遇到地图矢量数据和影像数据的坐标系转换问题,在今年的FME博客大赛中,想跟大家分享一下遥感影像坐标系校正问题。

2背景

GCJ02坐标系是由中国国家测绘局制订的地理信息系统的坐标系统,它是一种对经纬度数据的加密算法,即加入随机的偏差。目前,两种坐标系下矢量数据的校正是通过将矢量数据打散成点要素,提取坐标点的经纬度后,通过数学模型校正至另一个坐标系下,再将校正后的坐标重新连成线要素或者面要素,从而实现矢量数据的两种坐标系校正,MyFME中已经开发了ChinaReprojector工具来实现矢量数据的WGS84、GCJ02、BD09三种坐标系的校正,但是,遥感影像这种栅格数据无法通过以上算法来实现。因为加入了随机偏差,大范围的影像数据通过简单的四参数或者七参数部分区域的误差无法满足数据生产的精度要求,以下是遥感影像WGS84和GCJ02坐标系校正的解决方案。

3技术路线

本文以WGS84转到GCJ02坐标系为例来说明两套坐标系之间的校正问题。

总体技术路线:

1.获取WGS84坐标系遥感影像的矢量范围面,并分割成N个小的矢量面;

2.获得小矢量面的四个角点,并转至GCJ02坐标系下,通过四个角点的两套坐标生成4个向量线;

3.按照小矢量面的四个角点范围对影像进行裁剪,并用2中的4个向量线将裁剪后的影像转至GCJ02坐标系下;

4.重复2、3得到GCJ02坐标系下的N块儿小影像;

5.影像镶嵌:将N个GCJ02坐标系的小范围影像镶嵌为完整的影像,完成整幅遥感影像WGS84至GCJ02坐标系的校正。

4具体FME实现流程

该过程需要两个fme模板实现。

FME模板1的功能描述:将某一个矢量范围内的影像转到对应的坐标系下,fme具体流程如下所示。

                                                图1:实现某一矢量范围内影像的两种坐标系校正

主要分为以下4步,分别对应不同颜色的书签:

1.将范围面要素用GeometryCoercer转换器转成线要素,用Snipper转换器去掉线要素的最后一个点(最后一个点和第一个点的坐标是一样的),用Chopper将其打碎成点并用CoordinateExtractor转换器提取各个点对应的经纬度坐标;

2.根据TestFilter转换器判断是WGS1984>GCJ02或者是GCJ02>WGS1984,将点要素坐标值按照对应的数学模型转至对应的坐标系下;

3. 用VertexCreator转换器按照两套坐标系下的坐标值生成对应的向量线;

4.用Clipper转换器按照矢量范围对影像进行裁剪,并按照3中的向量线将裁剪的影像用AffineWarper转换器转至对应的坐标系下。

部分转换器的设置如下:

                                                                         图2:Snipper转换器设置

                                                                                     图3:TestFilter转换器设置 

                                                                图4:实现WGS84和GCJ02坐标系校正的部分代码 

FME模板2功能描述:将WGS84坐标的整幅影像的矢量面按照一定宽度分割成N个面状要素,通过调用FME模板1得到N块儿GCJ02坐标系的影像,将其镶嵌成一幅完整的影像,完成整幅影像坐标系的校正,FME具体流程如下:

                                                             图5:通过嵌套模板1实现整幅影像的坐标系校正 

                                                                图6:通过自定义转换器使界面清晰整洁 

  1. 用RasterExtentsCoercer转换器提取整幅影像的矢量范围面;

  2. 用Tiler转换器将1中的矢量范围分割成约2km*2Km的N个面状要素,用GeographicBufferer转换器向外缓冲10米的距离(确保后期相邻影像存在10米左右的重叠区域),用BoundingBoxReplacer获得面要素的二维边界框,该二维边界框即为后期裁剪影像的矢量范围,用FeatureWriter转换器将每一个二维边界框按shp数据格式输出至固定文件夹中;

  3. 用FeatureReader转换器将2中的shp数据重新读入程序;

  4. 用WorkspaceRunner转换器调用FME模板1,输出结果为N个坐标校正后的影像,将结果写至指定的文件夹下,相关转换器设置如下:

                                                                     图7:WorkspaceRunner转换器设置方法

5  .用FeatureReader转换器将影像重新读入程序,用RasterMosaicker转换器将其镶嵌为完整的一幅影像,完成该影像坐标系的校正(读入的影像需要先用RasterBandNodataSetter转换器处理一下,否则影像接边处会有黑边出现),相关转换器设置如下:

        图8:FeatureReader转换器设置方法                               图9:RasterBandNodataSetter转换器设置方法

6   删除中间数据。

                                                                      图10:删除中间数据

5校正结果的精度比对

将一幅约10KM*10Km的GCJ02坐标系的影像转至WGS84坐标系下,叠加WGS84坐标系的矢量数据进行比对,公路、建筑物、绿地、水系等地物要素与影像数据完美套和,满足地图矢量化的精度要求。

6结束语

影像坐标系校正是GIS数据生产过程中经常遇到的问题之一,本文主要是通过WorkspaceRunner转换器嵌套另一个fme模板实现遥感影像不同坐标系之间校正。该FME模板也已经在单位的数据生产上得到了应用,解决了自数据生产就困扰我们的技术问题。

FME软件为地图数据生产提供了丰富多样,功能强大的转换器,自接触到FME软件以来,就非常喜欢在FME的workbench中敲出各种转换器的那种感觉,目前FME软件已经成为我们数据生产上的亲密伙伴,在减少人力成本的同时,极大的提高了我们地图数据生产的效率。

 

发布了372 篇原创文章 · 获赞 203 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/105545153
今日推荐