四维图新地图坐标_移动端地图技术分享

本人现就职于国内某地图导航公司,这篇文章是我前段时间在公司组织技术分享的一个PPT,文章内容也主要由这个PPT的内容为主,通过这篇文章可以很好的帮你了解地图导航这个行业的相关技术。

PPT内容主要包括地图相关专业知识、百度和高德SDK整体框架、数据来源、行业概览等组成。其中关于地图引擎相关的技术知识,我向公司地图引擎开发同事求证过,这个PPT也给他们看过,也帮忙指出了其中的一些问题。

这篇文章主要用于分享,其中如果有什么问题,还请多多指出,谢谢!

地图开发专业知识

经纬度

经纬度

经纬度是一种地理坐标系统,主要用来表示地球的球面坐标系,经纬度可以定位地球的任何一个位置。南北方向的称为纬度,东西方向称为经度。

纬度:赤道纬度最长,离赤道越远纬度周长越短,也就是纬度越小。赤道以南称为南纬,赤道以北称为北纬。纬度取值范围是0-90,赤道纬度为90,两级最小。

经度:经度也叫子午线,任意两条经线长度相等,起始点都在南北极。经度以本初子午线为区分,以东称为东经,以西称为西经,东经为正数,西经为负数。经度取值范围在0-180,本初子午线为0。东经180度也就是西经180度就是白令海峡,白令海峡就是国际换日线,日期相差一天。

按照经度,地球被分为24个时区,每个时区又有分,分又包含秒。

投影

投影

投影

做地图,投影的概念很重要。我们的地球是圆形的,地球的坐标是一个球面坐标,球面坐标是三维坐标(x、y、z),而我们的地图是是二维的(x、y),需要将球面的三维坐标转换为平面的二维坐标。

坐标转换久用到了投影的概念,常用的投影有:圆柱投影、圆锥投影、方位投影,而在我们地图导航中使用墨卡托投影。

墨卡托投影

墨卡托投影

百度、高德、Google都使用墨卡托投影,墨卡托投影有一个很大的弊端,就是在高纬度(南纬、北纬)地区产生巨大的变形。变形比较严重的地方在于俄罗斯、格林兰岛、非洲、南极洲等高纬度地区。

墨卡托投影

上面五个国家分别是:俄罗斯、澳大利亚、中国、巴西、加拿大

我们将这五个国家放在一个纬度,来比较这五个国家,发现相差并不太大。但是如果放在上面那张图中,俄罗斯顶好几个中国大小。

国外开发者开发了一个网站,这个网站可以将不同国家拉到同一个纬度,这时候就能显示出真正比例的国家面积。

古德投影

古德投影

古德投影可以避免地图变形的问题,这种投影将地图分为几个部分,然后沿赤道将几个部分连接在一起。我们发现上面的格林兰岛已经被分为两部分,这种投影并不适合用于开发,而且看起来效果也不太好看。

金字塔模型

金字塔模型

把一张世界地图显示到手机里是不可能的,所以就引入了金字塔模型的概念(也就是比例尺),我们可以根据不同的缩放比例,显示不同的分辨率。

在地图应用中,我们用手指缩放和放大地图,地图显示大小的变换,都是基于金字塔模型来组织瓦片图的。

瓦片坐标系

瓦片坐标系

和金字塔模型配合使用的就是瓦片坐标系,在不同的缩放等级下,同一块区域瓦片个数也是不一样的。

瓦片越多就代表这一区域显示越详细,缩放比例也就越大。瓦片坐标系在2D和3D的场景下都会被使用,我们在网络不好的情况下可以看到地图瓦片的加载过程以及瓦片的大小、位置。

坐标加密CoreLocation中的经纬度加密(WGS-84)

高德SDK中的经纬度加密(GCJ-02)

百度SDK中的经纬度加密(使用GCJ-02再次加密)

根据中国法律规定,地图提供商必须对地图经纬度进行偏移,国测局制定了一套加密标准,就是常用的GCJ-02。经纬度坐标加密主要有两种格式,GPS坐标系 (WGS-84) 和火星坐标系 (GCJ-02) ,加密算法是开源的,可以搜索到。

国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。由于每家导航SDK提供方加密都不统一,所以百度、高德、谷歌多家地图数据并不统一,需要再次进行转换。

地图定位

地图定位

移动端定位方式主要有三种:GPS、Wi-Fi、基站,但是android和iOS还不太一样,android可以让用户选择和设置那种定位方式,但是iOS是由系统为我们选择的,我们没有操作定位方式的权限。iOS不允许有第三方定位,所以现在地图应用都是对系统定位进行的封装。如果有GPS信号,iOS系统会优先选择GPS方式定位,然后是Wi-Fi定位,如果Wi-Fi信号不好就会选择基站定位。

在定位中精确度最高的是Google,Google利用大数据分析,记录每一次利用Google地图的定位。下次再次定位时,直接根据Mac地址等信息进行分析,提高定位精确度。

比较悲催的一个问题就是,有一些比较老的iOS机器,没有GPS定位模块,例如一些老版本iPad,这种设备在没有Wi-Fi的情况下是无法定位的。

地理编码和逆地理编码

示例图片

地理编码:即地理解析,由详细的结构化地址得到对应的经纬度信息,例如北京市海淀区中关村南大街27号的地址,就可以获取到一个唯一的经纬度信息。

逆地理编码:即逆地理解析,由一个经纬度信息获取一个结构化地址信息,例如lng:116.31985,lat:39.959836经纬度,就可以获取到类似于上面的地理信息。

在iOS系统API、高德SDK、百度SDK中,都为我们提供了地理编码和逆地理编码API,但是需要注意经纬度的转换,不同地图SDK返回的经纬度加密方式不同,我们在传入经纬度参数和接收经纬度参数时,都需要做转换。

地图数据来源

高德

四维图新

国内比较活跃的数据采集商主要是高德和四维图新两家,百度没有数据采集资质(最近收购了道道通),所以数据主要依赖于四维图新。

四维图新和国家测绘局合作比较密切,数据来源主要是国家测绘局提供,也有部分自己测绘的数据。高德测绘和航拍能力还不错,主要自己测绘数据,部分数据也依赖国测局提供。数据测绘单位互相之间都有合作,会相互购买自己没有的数据。

在中国,谷歌地图或苹果地图等地图开发商,数据来源几乎都是这两家公司。

POI数据

POI

POI数据是一种矢量数据,包括美食、商店、银行、加油站等都是POI数据,在地图上一般都以气泡或大头针表示。

数据采集可以通过车载GPS摄像机采集,或从服务性互联网企业抓取或购买,由于百度和高德提供了对外的SDK,通过用户使用地图SDK也可以获取一些数据。

百度的地图数据主要依赖于四维图新和道道通,高德地图主要以自采为主。一般这些数据也会和大众点评、携程、口碑等互联网服务商购买,相互之间也会购买POI数据。

栅格-2D地图

珊格图

珊格图

2D场景:轻地图应用,简单的位置分享、兴趣点标注、线路展示等。2D模型展示效果不太好,在缩放比例较小的情况下,看起来比较模糊(缩放比例大一些看起来清晰度还可以)。

栅格模型对于某一个地方的描述,是通过很多层图片叠加组成的,每层代表不同信息(例如道路)。栅格模型一般都会先渲染一个底图,然后是在底图的基础上叠加路况、POI等图层。

珊格图都是在服务器预处理的图片,从服务器下载处理好的图片到本地进行拼接即可,由于下载到本地是图片,本地不能再对图层进行更改。对于性能上来说,服务器进行图片合成性能消耗较大,但是客户端性能消耗比较小,内存占用也比较小,用起来会比较流畅。

矢量-3D地图

矢量地图

矢量地图

3D场景:重地图应用,以LBS为核心功能,需要离线地图、更好的渲染效果、app内导航的。比如打车应用、出行导航类应用,3D模型渲染后的效果比较好,一般使用导航功能都必须用这个3D模型。

矢量数据是从服务器将地图数据下载下来,然后在客户端进行合成绘制的,所以我们可以对地图的显示进行控制,可定制性更强。矢量图看起来更佳清晰,渲染效果比较好。但是矢量图对手机性能消耗很厉害,手机内存占用比较高,CPU、GPU消耗都很大。对于服务器性能消耗就比2D场景性能小一些,因为服务器只是加载原始数据和向客户端进行传输,将合成绘制等这些图层渲染的绘制处理交给客户端来做。提高了客户端灵活性和更好的效果,牺牲了客户端的性能,有利有弊。

三维地图

三维地图

三维地图是以三维地图数据为基础开发的,三维地图看起来更佳立体化,地图上可以呈现出立体建筑及阴影的效果,而且地图随着用户的操作,楼宇的角度、阴影等效果也会随之发生变化。

在三维地图过渡过程中,也出现过假三维地图。这种地图只能进行平面平移,不能进行旋转操作,是数据平面地图和三维地图过渡的产物。

国外地图

国外地图

百度地图目前已经可以支持部分国家的国外地图服务,例如新加坡、韩国、日本、泰国等国家。可以在最新的百度地图app上直接查看、搜索这些国家的一些POI,以及使用导航等功能。

目前为止只有百度一家支持国外地图服务,高德暂时不支持这项服务。在百度和高德不支持的地方,由于服务器没有数据,所以不会做渲染,看起来白白的一片。

实景地图

实景地图

实景地图最开始是Google研发的,这项技术需要软件和硬件相互的配合,以及大量的数据处理才能完成。

采集实景需要各式实景采集工具,包括汽车采集、自行车采集、人力采集等,这主要是由于需要应对各种采集地点。采集时将数据实时绑定GPS位置,这样就清楚是在哪个位置采集的。

数据采集后需要工程师将数据进行复杂处理,才能形成我们看到的实景数据。实景数据一般都是静态的,而且不是实时更新的。实景数据为了保护被采集人的用户隐私,需要对关键部位进行模糊处理,例如脸、车牌照等。

室内地图

室内地图

室内定位是一种结合3D定位的定位模式,这种定位可以在室内进行定位。室内定位直接定位某个商铺在几楼的某个位置,而且可以选择楼层。

在传统的定位中,楼内由于是多层,会导致定位重叠的问题,而且楼内GPS信号也不太好甚至没有。所以出现了一些新技术来实现楼内定位:AGPS(辅助全球卫星定位系统)、Wi-Fi指纹定位、zigbee芯片定位、RFID智能标签技术、以及苹果推出的ibeacon,其中高德使用的是Wi-Fi指纹定位技术。

百度热力图

百度热力图

首先是由百度率先支持热力图功能,热力图功能预示着大数据时代越来越近。热力图是根据百度地图移动客户端和SDK在这些地区的使用情况推断出来的,这些推断数据可以是网络请求、打开次数等,通过这些数据推断出人员分布。通过之前百度在CCTV的报道来看,通过这些数据甚至可以预测景区拥堵,防止大型踩踏等群体性事件。

热力图随着同一区域的密集程度变化,颜色随之变深。但是由于统计方式的特点,统计的数据并不太准确,例如白天和夜间就有很大区别,只是当作参考。

地图SDK架构

高德SDK结构

高德SDK结构

Annotation:单点标注,继承自UIView,可以使用UIView的一些基础属性,引入了重用机制(百度也是同样的实现,包括一些打车软件的小车,都是使用Annotation实现)。

Overlay:多点标注,引擎直接渲染,可以通过SDK的API自定义UI,多点标注用于标识路线或某一个区域。

Other:云搜索,地理编码和逆地理编码,导航路径规划,定位,POI搜索等。

MapKit和高德SDK区别

对比

右边图片的高德logo是黑色,并且显示在右下角,这是iOS系统的MapKit.framework

左边图片的高德logo是蓝色,并且显示在左下角,这是高德自己的SDK。

苹果的MapKit只是使用了高德的数据,但是API是苹果自己开发的。

百度地图SDK框架

百度地图SDK框架

跨平台引擎:百度地图的地图引擎使用openGLES绘制

能够运行于支持C++的手机系统平台

不同平台对应用层保持一致的API接口

提供能够满足应用层的基础数据结构

尽量少的依赖系统接口,提高可移植性

灵活性和可扩展性

百度地图对于高德地图来说,增加了一些实用性的功能,例如热力图、骑行、个性化地图等。这些功能都是高德所没有的,当然高德也有一些很不错的功能,两者各有优点。

百度地图和高德地图都有2D和3D功能,2D纯平面展示,没有楼宇拔高效果。

百度地图SDK框架

百度地图SDK框架

百度SDK主要模块划分:地图(基础功能,地图显示以及操作和各种覆盖物图层)

检索(POI,地理编码、路径规划等)

定位(提供独立定位模块,经纬度根据国测局二次加密)

工具(调用百度客户端,坐标转换等)

周边雷达(检索用户信息,查找附近的人,主要用于社交)

LBS云(区域检索,百度服务器存储数据,可以自己操作,属于开发者自有数据)

百度SDK分为六个大的模块,可以按照需求下载对应的模块,这样使下载下来的SDK体积变小。

百度鉴权认证策略:用户可以通过两种方式与百度开放云进行交互,包括认证方式和匿名方式。在SDK中很多地方都用到了鉴权认证,例如加载地图时认证不通过不会显示地图,百度比较看重SDK的鉴权。

图层渲染

图层渲染

百度地图渲染分为多个图层渲染,每个图层渲染的目标也不一样,地图上自定义标注和覆盖物统称为地图覆盖物,多个图层叠加起来形成矢量图。百度地图SDK地图等级目前为19级,可以根据缩放等级的不同渲染建筑物、道路、河流、学校、公园等内容。

百度地图支持多点触摸、双击放大、多点缩小、旋转等手势操作。并且支持画点、折线、圆、多边形等操作,并且可以自定义热力图、瓦片图等。

百度个性化地图

百度个性化地图

百度地图在16年1月份推出了个性化地图,SDK提供了个性化地图模版,通过地图模版更改底图颜色和样式。从百度开发者平台下载到模版,通过地图模版可以修改地面、水系、草地、道路、铁路、地铁、POI等颜色和样式,然后调用SDK提供的方法读取该模版即可。

地图产业链

地图产业链

活跃统计

第一张图是一份14年的统计报告,这份统计报告统计不太全面,部分导航应用没有被包含在内。

在这份统计报告中,我们发现高德是唯一一个覆盖整条产业链的企业,在产业链的每个环节都存在高德的身影。

2014年4月,阿里对高德完成了15亿美元的收购,高德成为阿里旗下全资子公司。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅!2019年诺贝尔生理学或医学奖揭晓,“细胞感知氧气通路”摘得桂冠

来源:奇点网北京时间2019年10月7日17点30分,2019年诺贝尔生理学或医学奖揭晓,得主为William G. Kaelin Jr,Peter J. Ratcliffe和Gregg L. Semenza,获奖理由为“他们发现了细胞如何感知和适应氧气供应”。William G. Ka…

HTTP深入浅出 http请求

HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议&#xff0c…

大一python基础编程试卷_2020大学慕课Python编程基础试题及答案

2020大学慕课Python编程基础试题及答案更多相关问题 四川总面积48.6万平方公里,居全国第()位。 国民经济恢复是在() 马化腾是独自创立了腾讯公司 智慧职教: 颈静脉搏动可见于 马化腾是独自创立了腾讯公司 下列各项中,对于会计核算…

vue 找回密码_vue实现个人信息查看和密码修改功能

下面一段代码给大家介绍vue实现个人信息查看和密码修改功能,具体代码如下所述://用了element组件,自己要加载和引入保存保存//这些不要在意,这些是我们自定义的接口,用的时候就直接拿来了import {fetchall,fetchbyid,f…

世界十大最美方程式

来源:数学职业家自从科学诞生后,不可避免地就会用到方程式,这些方程式以其独特的作用服务于人类的生产创造以及各门学科。而最近几百年的时间,更是方程式数量极大增加的时候,同时也是科学技术突飞猛进的年代。从侧面看…

160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘

一、浏览器渲染页过程描述 1、浏览器解析html源码,然后创建一个DOM树。 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点)。 DOM树的根节点就是documentElement,对应的是html标签。 2、浏…

小程序 pagescrollto_微信小程序学习笔记(三)-- 首页及详情页开发

一、常用组件在上一个章节中讲解了封装请求数据的模块,在此处请求轮播图的数据1.首页轮播图数据的请求以及渲染1.1 轮播图数据的请求 pages/home/home.jsimport 2 使用组件 - 视图容器 - swiper滑块视图容器。其中只可放置swiper-item组件,否则会导致未定…

云计算与边缘计算协同 九大应用场景

来源:物联网报告中心前言2019 年边缘计算备受产业关注,一度引起了资本市场的投资热潮,很多人把2019 年称作边缘计算的元年。理性来看,造成如此火爆局势难免有一些炒作因素在推波助澜,毕竟边缘计算的概念存世也已多年。…

cat3 utp是不是网线_网线/双绞线上各标识CAT, AWG, PR, UTP/STP/FTP/SFTP的含义

CAT5, CAT5e, CAT6表示网线类别, 常见的有 CAT5, CAT5e, CAT6分别表示五类, 超五类, 六类网线24AWG, 26AWGAmerican Wire Gauge是美制电线标准, 表示电缆直径. AWG值是导线厚度(以英寸计)的函数, 24AWG约为0.511mm,4pr表示有四对双绞线UTPUnshielded Twisted Pair 非…

Wireshark过滤器表达式的规则

1、抓包过滤器语法和实例 抓包过滤器类型Type(host、net、port)、方向Dir(src、dst)、协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)、逻辑运算符(&& 与、|| 或、!非&…

《深入浅出WPF》学习笔记之深入浅出话属性

依赖属性是一种可以从父级元素继承,并且可以通过Binding从数据源获取,当从父级继承时不占用内存的属性系统。拥有依赖属性的对象称为依赖对象。WPF允许在创建对象时并不分配用于存储数据的空间,而在需要时实时分配空间或直接借用父级数据&…

sql 创建表时AUTO_INCREMENT=10

默认地,主键的开始值是 1,每条新记录递增 1,AUTO_INCREMENT10 代表初始值为10。

一年代码功能点的创新性怎么写_查新报告的查新点(创新点)写法,参考

创新点(查新点)写法参考(要求:尽量具体,简明扼要,突出核心亮点,用专业术语。不要写的笼统、抽象、宽泛、上位)。可从结构、技术、参数、功能等方面考虑(并非全部要写):1、结构方面的创新(前面部分是具体的创新结构形式…

查询手机号段对应地区编码_2020陕西专升本考试今日起查询成绩啦

专升本考试顺利结束,我们终于迎来了验收成果的时刻,每位参与专升本的同学都是最棒的,现在 我们一起去揭秘考试成绩吧!专升本成绩查询指南成绩查询及志愿填报登陆“陕西省教育考试院”或“陕西省招生考试信息网”陕西招生考试信息网http://www.sneac.com/陕西省教育…

李德仁院士:5G时代空间信息如何实现智能服务

李德仁院士来源:光明日报【编者按】随着5G时代的到来,物联网、云计算、大数据等技术快速发展。信息基础设施日益完善,全球时空大数据呈爆发式增长。在这样的时代背景下,如何实现空间感知和空间认知的智能化,在正确的时…

个人对响应式布局的理解

从字面上理解,响应式布局即CSS布局随着屏幕尺寸的变换而变化。首先我们要搞清楚什么是固定布局,什么是流式布局。固定布局(Fixed Layout)使用固定宽度的包裹(Wrapper), 内部的各个部分可以使用百分比或者固定的宽度来表示. 这里最重要的是, 外面的所谓包…

jmeter 不同场景 比例_在JMeter测试中如何根据业务场景来控制运行比例

性能测试混合场景中,我们需要组合多个业务操作到场景中来。比如有一个论坛的业务分布如下:开新帖与回复帖子的比例为2:3,那么我们在JMeter测试计划中如何控制其比例呢?下面我们介绍两种方式:1.多线程组方式2.逻辑控制器…

python爬取新浪新闻首页_学习了《python网络爬虫实战》第一个爬虫,爬取新浪新闻...

请安装anaconda,其中附带的spyder方便运行完查看变量 1.进入cmd控制台, 输入 pip install BeautifulSoup4 pip install requests 2.编写代码,代码已经很清晰了,直接运行不会报错并有成功的结果def getNewsDetail(newsUrl): import requests f…

sql去重查询

例如,从 "Websites" 表的 "country" 列中选取唯一不同的值 SELECT DISTINCT country FROM Websites;

计算机和人类“看”法不同,但这重要么?

来源:大数据文摘“看”这个动作一直被认为是生物所独有的。当工程师第一次“教”计算机“看”这个动作时,他们理所当然地认为计算机可以像人类眼睛一样进行观看。约克大学(York University)计算机科学家约翰托索斯(Joh…