文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1. 背景

目前对多个项目轨迹不准确的情况做了排查,发现导致轨迹偏移百分之七八十的原因反而是转换四参数不准确导致。所以,比起进行轨迹优化等,最根本需要解决的是四参数(通过三个及以上控制点对换算得出)不准确问题。那么如何判断四/七参数是否准确呢?针对这个问题我们给出一个通用方案。

2.原理说明

这里,我们从两个方面着手,一个是验证我们系统地图本身是否偏移,第二个是验证在地图准确的情况下四参数是否准确。

如果地图本身偏移,则应该先解决地图偏移问题后再进行第二步验证。

3.验证地图本身是否偏移

验证地图是否准确我们分为了两种情况,最简单的情况即是存在参考数据的情况,复杂些的情况则为没有参考数据的情况。

3.1有参考数据的情况

在使用地图页面上通过图层树勾选,将路灯或者行道树此类有明显排布规则的图层叠加显示在地图上,查看图层数据是否有偏移,如果没有则说明地图本身是准确的。

3.2无参考数据的情况

当无参考数据时,若地图底图是ArcGIS Server发布的,可以分别通过在arcmap中加载地图服务的地图和在系统地图中选择同名点来获取两对坐标,对其进行比较以验证系统地图是否有偏移。

其中,arcgis server发布的地图服务可以直接拖拽到arcmap的Table of Contents中出图,鼠标在地图上移动时,右下角的地图坐标会同步变化。

在系统地图上,可以借助工具栏上的定位工具,在地图上点选以获得对应坐标。

如果地图来源是天地图、互联网地图或其他第三方天地图的资源,则可以在网上搜索相应的添加到arcmap中的方法,或者用其他方法获取同名点位置正确的地图坐标。这里提供一个“在Arcmap中加载互联网地图资源的4种方法”的例子:http://www.cnblogs.com/skyofbitbit/p/3724479.html

4.地图精度准确的情况下验证四参数是否正确

其流程为:地图上获取一个本地坐标A1(X,Y),互联网地图上获取一个相同地点上的A2(LAT,LOG),将A1用四参数转换后成为A3(X,Y)。A1和A3对比精度即可。

4.1.在系统地图上获取参考控制点本地坐标

在系统地图上选择一个合适的位置,把地图放大到最大,选取一个当地平面坐标系的点,获取其平面坐标(x, y),建议选择位置明显便于定位的点,如道路交叉口。

利用系统地图的工具栏中定位按钮,然后在地图上点选,以获取其地图坐标:

如上图所示,在廊坊市人民政府附近的广阳道和光华路十字路口中央选取一个,其地图平面坐标为(472305.8106223327, 4378112.87180241)

4.2获取同名点的WGS84经纬度坐标

利用http://www.gpsspg.com/maps.htm 可以获取WGS84经纬度坐标:

找到与1中同名的位置,在地图上点选以获得其经纬度坐标(北纬N39°32′11.26″ 东经E116°40′45.40″),转换成小数形式为(116.67927777777778,39.53646111111111)

4.3四/七参数法转当地平面

利用已获取的WGS84转当地平面的正转参数(四参数或七参数),将其转换为当地平面,如廊坊现场的转换四参数为:

四参数:-134706.625179201#6463.79711914063#0.0111178719813301#0.999964601080147#0#116

将4.2中获取到的北纬N39°32′11.26″ 东经E116°40′45.40″)坐标通过该四参数转换后的当地平面坐标为(472310.28591671225,4378112.980450279)。

4.4转换结果精度评价

最后,把点选得到的当地平面坐标和用手机转换参数得到的当地平面坐标进行对比,以验证手机提供的WGS84转当地平面的转换参数是否正确:

地图点选坐标:(472305.8106223327, 4378112.87180241)

参数转换坐标:(472310.28591671225,4378112.980450279)

通过本例的结果对比,发现x方向偏差大概为4.5米,y方向偏差大概为0.1米,考虑到人为在地图上选取同名点的误差,廊坊现场提供的手机坐标转换参数还是比较准确的。

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                      

轨迹系列5——验证轨迹GPS坐标转换为本地坐标的四/七参数是否准确的一种方案的更多相关文章

  1. 火星02坐标转换为WGS84坐标

    import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import jav ...

  2. unity---世界坐标和本地坐标的转换

    会受到缩放的影响 用的比较多的是 本地坐标转换为世界坐标,比如在自己周围释放物体 当物体发生旋转,方向会发生变化

  3. Cesium之球心坐标与本地坐标

    1球心坐标(ECEF)与本地坐标(NEU) 假如你来到一个陌生城市,你很可能需要问路.通常会告诉你向北走100米,右转,向东走100米,理解起来很直观.你给儿子买了一个地球仪,你从北京(39,115) ...

  4. canvas中window坐标转换为canvas坐标

    function getMousePos(canvas, evt) { var rect = canvas.getBoundingClientRect(); return { x: evt.clien ...

  5. GPS转换为百度坐标

    原文地址:http://www.cnblogs.com/zhaohuionly/archive/2013/06/18/3142623.html 最近在做一个关于手机定位的小应用,需求是这样的,用户通过 ...

  6. GPS坐标换算为百度坐标

    最近在做一个关于手机定位的小应用,需求是这样的,用户通过手机(Wp8)进行二维码扫描操作并且记录用户的当前位置,在PC上可以查看用户所在地图的位置,做法就是在用户扫描条码时,通过手机GPS获取当前在地 ...

  7. GPS坐标换算为百度坐标(转)

    最近在做一个关于手机定位的小应用,需求是这样的,用户通过手机(Wp8)进行二维码扫描操作并且记录用户的当前位置,在PC上可以查看用户所在地图的位置,做法就是在用户扫描条码时,通过手机GPS获取当前在地 ...

  8. 百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转

    // 坐标转换 var coordTransform = (function () { // 一些常量 var PI = 3.1415926535897932384626; var X_PI = 3. ...

  9. 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标

    因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...

随机推荐

  1. Java构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?

    [Java笔试真题]:构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [解答]:当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构 ...

  2. linux 完全关闭tomcat

    由于直接调用tomcat的 shutdown.sh 有时无法完全关闭掉tomcat,使用 ps -ef | grep tomcat 查找发现tomcat依然还存在,并未完全关掉.在 catalina. ...

  3. SUSE12SP3-Mysql5.7安装

    1.将以下安装包复制到服务器 mysql-community-client-5.7.24-1.sles12.x86_64.rpm mysql-community-server-5.7.24-1.sle ...

  4. [Swift]LeetCode291. 单词模式 II $ Word Pattern II

    Given a pattern and a string str, find if strfollows the same pattern. Here follow means a full matc ...

  5. Python使用Xpath轻松爬虫(脑残式)

    1.在PyCharm安装lxml. 2.找到源码 3.F12.copy源码的xpath 4.代码 from lxml import etree import requests wb_data = re ...

  6. qt之fiddler抓包

    最近项目中使用到了Qt的网络库,在用的过程中也发现了不少坑和问题,本文仅仅作为记录,方便日后查阅.    因为我们整个客户端的gui都是使用qt来完成的,心想qt既然有网络库,而且真心觉着qt封装的控 ...

  7. Lucene 02 - Lucene的入门程序(Java API的简单使用)

    目录 1 准备环境 2 准备数据 3 创建工程 3.1 创建Maven Project(打包方式选jar即可) 3.2 配置pom.xml, 导入依赖 4 编写基础代码 4.1 编写图书POJO 4. ...

  8. EF架构~让mysql支持DbFunctions扩展函数

    回到目录 对于在Linq To Entity里使用日期函数需要DbFunctions里的扩展方法,而不能使用.net里的日期函数,因为linq的代码会被翻译成SQL发到数据库端,如你的.net方法对于 ...

  9. (一)你的第一个Socket程序

    概述 本文通过一个最简单的Socket通信来对每一步做通俗易懂的讲解让你了解这些函数到底是干什么用的.下面的代码虽然是用Pyhton实现的,但是你要知道这些通信机制并不是Python所定义的,因为这些 ...

  10. Spring Cloud Eureka基本概述

    记一次Eureka的进一步学习. 一.Eureka简介 百科描述:Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡 ...