技术标签: WEB
关于目前(2019)电子设备和电子地图定位的探索,希望可以回答如下几个问题:
答:中国地图采用的坐标系和GPS坐标不是同一个坐标系,所以采用GPS坐标在地图上定位不准。
答:GPS是美国的导航系统,全球通用,手机内置的芯片都是GPS芯片,没有差别。不同的地方是地图有着不同的GPS坐标系。
答:借用百度的说明如下:
WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。
BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
链接:http://lbsyun.baidu.com/index.php?title=coordinate
坐标系是在一个系统中的参考坐标系,所以在同一个系统内不存在问题。例如,如果需要获取某一个地图上的位置,通过地图SDK就可以获得地图坐标系的位置,不存在问题。(例如,你一直都是用百度地图,定位也是通过地图定位,那么没有任何问题)如果希望在不同的坐标系上使用,必须经过转换。最好的办法是,统一采用同一个地图,不切换坐标系。例如做国内系统,用百度地图,高德地图都可以。如果做国际项目,那么最好建议采用Google地图,国外地图数据最完整,其次是百度。
Google国内外访问地址,key需要在google账号中申请(目前需要梯子)
国内:https://ditu.google.cn/maps/api/js?key=
国外:https://maps.google.com/maps/api/js?key=
关于坐标系转换,参考百度文档:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans
缘起,首先来看一个问题,一个朋友在柬埔寨通过GPS软件获得一个GPS位置,发现和实际位置不准的问题,赶快查询了一下,“果然不准确”。
网上各种方法,代码,工具,理论等等……看来这个问题还很普遍嘛,可是随着我的深入查找资料和验证,发现不对!下面我们听我慢慢细说。
关于坐标系查询,可以通过http://www.gpsspg.com/maps.htm网站查询。同时我可以发现这个网站可以通过国界线区分坐标系的换算,而网上不少代码均是通过经纬度范围简单的判断是否在中国境内,对于中国周边国家会存在问题,估计有问题。不过该网站的谷歌地图坐标有问题,估计是老版本的地图,而且也打不开google地图。
上图为中国云南边境
上图为中国与缅甸交界的地方。
Google地图(国际版)GPS坐标定位工具:
https://www.gps-coordinates.net
该工具可以在google地图(国际版本)上根据GPS定位,而且下发写着坐标系是WGS48。经过实际对比发现Google地图,对于中国境内采用的依然是GCJ-20坐标系。
为了验证Google地图在国内的位置依然是GCJ-20坐标系,我采用下面的方法得出的结论(有兴趣的朋友继续阅读)。
如何判断GPS坐标是WGS-48,还是GCJ-20坐标体系呢?
我发现,通过iPhone的指南针的经纬度,如果直接换算为Google地图的坐标进行设置时发现,和实际位置不相符(国内),通过Android 三款软件进行数据采集发现有相同位置不同软件具有两种经纬度信息:
GPS定位导航采用的GCJ-02坐标
GPS定位工具箱采用的也是GCJ-02坐标
GPS实时海拔采用的是WGS-84,和iPhone指南针相同的数据。
注意:表面上看,并不能确认软件采用的具体坐标系(无法通过数值区分),而是通过比较得出的结论。
我写作位置的GPS位置数据分别如下:
序号 | 采集设备/程序 | 纬度 | 经度 | 纬度 | 经度 |
---|---|---|---|---|---|
1 | iPhone/指南针 | 北纬28°15’18’’ | 东经113°4’27’’ | 28.255 | 113.0741666667 |
2 | iPhone/GPS讯号 | 28.255055 | 113.074167 | ||
3 | 坚果手机/GPS实时海拔 | 北纬28°15’18’’ | 东经113°4’26’’ | 28.255 | 113.0738888889 |
4 | 坚果手机/GPS定位导航 | 28.251874 | 113.079874 | ||
5 | 坚果手机/GPS定位工具箱 | 28.251877 | 113.079878 |
如果把上述地址在https://www.gps-coordinates.net网页上输入,发现可以准确定位的是上表的4,5!是不是1,2,3。上面工具的网站声称采用WGS-48坐标系,而且Google Map英文文档也是采用WGS-48坐标系,那么是否可以推论4, 5就是WGS-48坐标系呢?
经过我的论证,他们恰恰不是WGS-48,而是GCJ-02!
为了论证这个设备的数值到底是哪种坐标系,煞费苦心。
后来发现百度地图的文档上说明,百度采用BD09LL坐标系,而且具有WGS-48,GCJ-02坐标转换接口,所以我对上述采集的数据通过以上两个转换方法对位置进行转换,得到百度的坐标系,然后在百度的坐标定位工具(http://api.map.baidu.com/lbsapi/getpoint/index.html)中定位,确认实际是否位置一致。
经过测试发现如下结论:
序号 | 经度 | 纬度 | WGS48->BD09经度 | WGS48->BD09纬度 | GCJ02->BD09经度 | GCJ02->BD09纬度 | 位置一致坐标类型 |
---|---|---|---|---|---|---|---|
1 | 28.255 | 113.0741666667 | 113.08658610 | 28.25765828 | 113.08069003 | 28.26092783 | WGS48 |
2 | 28.255055 | 113.074167 | 113.08658632 | 28.25771306 | 113.08069031 | 28.26098281 | WGS48 |
3 | 28.255 | 113.0738888889 | 113.08630670 | 28.25766231 | 113.08041105 | 28.26093265 | WGS48 |
4 | 28.251874 | 113.079874 | 113.09232310 | 28.25445936 | 113.08642390 | 28.25770832 | GCJ02 |
5 | 28.251877 | 113.079878 | 113.09232718 | 28.25446229 | 113.08642791 | 28.257711260 | GCJ02 |
curl "http://api.map.baidu.com/geoconv/v1/?coords=113.0741666667,28.255&from=1&to=5&ak=hfyzyfi3dAG8dRE3GBTmiqrvpt6ZEr5j"
curl "http://api.map.baidu.com/geoconv/v1/?coords=113.0741666667,28.255&from=3&to=5&ak=hfyzyfi3dAG8dRE3GBTmiqrvpt6ZEr5j"
注意:http://www.gpsspg.com/maps.htm网站的Google地图已经失效(2019.7)。
关于坐标系的图示理解:
上图解释了,通过相同坐标系就不会有问题。
文章浏览阅读2.1k次。 需求如下:该搜索框是对整个页面的input检索 ,但与弹出层中的input冲突 博主几经辗转 简单处理 解决问题,思路如下:排除掉特定class的input。代码如下:$('input:not(.pop)', this.footer()).on('keyup change', function () { if (that.search() !== th..._input排他选择器
文章浏览阅读5.6k次,点赞6次,收藏20次。看到别人有个1024的勋章,特意留了一篇在今年的10.24日,看看会不会获得。在日常开发中可能涉及接口之间的相互调用,虽然在现在微服务的理念推广下,很多公司都采用轻量级的JSON格式做为序列化的格式,但是不乏有些公司还是有一些XML格式的报文,最近就在对接某个合作方的时候遇到了XML报文。在JSON报文爽快的转换下很难试用一个一个的拿报文参数,还是希望能直接将报文转换成Bean。接下来就了解到..._jaxb 泛型
文章浏览阅读1.2k次。numpy的主要数据对象是多维数组,其中包含相同类型的元素,通常是数字类型,每个元素都有一个索引。使用numpy前通常要导入包。import numpy as np目录类型维度创建运算索引和切片类型numpy的数组被称为ndarray。numpy.array只处理一维数组,而ndarray对象才提供更多功能。a = np.array([[1, 2, 3], [4, 5, 6]])type(a) # <class 'numpy.ndarray'>dtype属性可以获得元素的数_ndarray的位置
文章浏览阅读1.6w次。还在苦于网上找到的一些指令已经不适用了吗?还在苦于有些地方的指令有误吗?还在苦于有些地方整理的指令不够全面吗?那么你来对地方了!小编为大家整理了《我的世界》原版游戏常用的指令,这些基本足以满足各位的基本需求了!大家来一起看看吧!注:表示的是必须输入的部分,[方括号]表示的是可选择性输入的部分基本命令列表命令描述/?/help的替代命令,提供命令使用帮助。/ban + 玩家名字将玩家加入封禁列表。/..._gamemode指令java
文章浏览阅读1.5w次,点赞3次,收藏3次。Spring Boot 结合shiro做第三方登录验证1、首先,说一下我的具体实现思路。在做spring boot拦截器的过程中,开始我准备用spring security来实现,但是研究了一段时间之后发现spring security的集成度太高,需要修改的东西比较多,而且对它本身的使用方法不是很了解,后来转而使用Apache shiro。由于是第三方登录,是不需要我来验证密码的。最开始,我陷入了_shiro 第三方token登录
文章浏览阅读1.9k次,点赞4次,收藏4次。[INFO ] __init__:get_config:71 - Loading config file from:C:\Users\xxx\.labelmercTraceback (most recent call last): File .... line 191, in <module> main() File ...., line 145, in main config = get_config(config_file_or_yaml, config_fro_file "c:\rgzn\labelme-main\setup.py", line 91, in main if sys.argv[1] == "re
文章浏览阅读8.7k次。代码错误的原因和调试方法_代码报错
文章浏览阅读5.2k次,点赞9次,收藏40次。---恢复内容开始---1.认识游戏 1.1什么是游戏 1.1.1游戏的定义 任何人类正常生理需求之外的活动均可称为游戏 1.1.2游戏的分类 RPG角色扮演游戏、ACT动作游戏、AVG冒险游戏、FPS第一人称视角射击游戏、TPS第三人称视角射击游戏、FTG格斗游戏、SPT体育游戏、RAC竞速游戏、RTS即时战略游戏、STG..._深度解析java游戏服务器开发
文章浏览阅读4k次。CSRF是什么我就不解释了,百度一搜全是,比波姐的片源还要多,千篇一律都他么是复制粘贴。那为什么这个令牌(token)操作可以防范CSRF呢?下面我就随便说说说错了大家不要介意。首先我们要知道令牌是存储在session里面的,这个很重要 php代码如下<?php namespace app\index\controller; //我直接允许跨域,因为伪装..._tp5 开启csrf令牌
文章浏览阅读1.7k次,点赞2次,收藏6次。市盈率PE市盈率 = 市值/净利润概念解析:买入一家公司,几年回本,年化收益率:净利润/市值(市盈率的倒数)举例:砖头10万买个砖头,每年拍人带来1万利润,需要10年回本市盈率:10/1 = 10年化收益率:1/10 = 10%市净率PB市净率 = 市值/净资产净资产 = 总资产 - 负债举例:张三便利店,净资产:120万市值:1..._净资产收益率和股息率
文章浏览阅读737次。教育部昨举行「102年国立馆所文创商品设计比赛」颁奖典礼,台北科技大学创新设计研究所硕士生谢镇宇,为TW艺术教育馆设计「墨器」杯垫,取「默契」谐音,用5片压克力板,展现水墨画层层渲染效果,增加立体视觉感受,并在杯架后方加入LED光源,获评审肯定夺特优奖和奖金10万元。台南应用科技大学商品设计系学生高郁翔,为国立自然科学博物馆设计「恐龙化石钉书机」,他认为小朋友把钉书机钉下去的那一刻,会觉得像暴龙準_杯垫文创设计说明
文章浏览阅读404次。XML与对象,集合的相互转化 今天小伙伴在群里问了一下关于XML与对象之间的相互转换,作为菜鸟的我正好趁着闲着的时间学习了一波,直接上代码了,有疑问或者有错误的地方还请大家指正,谢谢。。。。 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System...._c# xml转集合