经纬度是一种地理坐标系统,坐标至高德坐标系下经纬度转换

该作品属于<简书 — 刘小壮>原创,转发请注解:

<简书 — 刘小壮>
http://www.jianshu.com/p/41179be5893a


我现就职于国内某地图导航集团,那篇作品是自己前段时间在商家集体技能分享的一个PPT,小说内容也重点由那个PPT的情节为主,通过那篇作品可以很好的帮您精通地图导航这么些行业的有关技术。

PPT内容根本不外乎地图相关专业知识、百度和高德SDK全体框架、数据来自、行业概览等组成。其中有关地图引擎相关的技艺知识,我向商店地图引擎开发同事求证过,这几个PPT也给他们看过,也协理提议了里面的一对题目。

那篇文章首要用来分享,其中借使有如何问题,还请多多提议,谢谢!


构建GIS地图常用文化

地图开发专业知识

坐标系

地球是一个语无伦次的球体,为便宜用平面的地形图表示地球表面的有血有肉世界,需选择椭球参数、投影方法等
把空间的球体 映射到平面图上,而平面图 对应的就是 二维的坐标种类。

坐标种类极度多,只要设立了坐标圆点、拔取椭球参数、投影形式后,你也足以进行一套自已的一套坐标种类。在我国,为保密要求,各种地点政坛保留的多少,选用的坐标系都是单身的地点坐标连串。

  • WGS84 坐标系

    国际上常用的坐标连串是”WGS84″
    坐标系,其原因在于美利坚合众国配置的GPS
    (满世界定位系统)是使用得最普遍的一套定位系统,而那套系统选取的就是
    “WGS84” 坐标系,包含大家的手机gps
    芯片未经处理间接回到的永恒数据(但假诺是手机厂商作了拍卖转换、或者利用百度
    高德的SDK捕获的GPS坐标 则不必然是WGS84
    坐标系下的,原因在于做了更换处理)、google 地图的数目利用的都是
    “WGS84” 的坐标连串。也即WGS84 坐标系是

    • 国际标准,从专业GPS
      设备中取出的数量的坐标系

    • 国际地图提供商使用的坐标系

  • 水星坐标
    (GCJ-02)也叫国测局坐标系

    • GCJ_02 坐标系是
      国测局坐标系 的首字母简称,又被戏称为金星坐标系

    • 中国正式,高德地图选择的是以此坐标连串

    • 江山确定:
      国内出版的各类地图系统(包蕴电子方式),必须至少拔取GCJ-02对地理地方展开端次加密。

  • 百度坐标 (BD-09)

    • 百度专业,百度
      SDK,百度地图,Geocoding 使用

    • (本来就乱了,百度又在罗睺坐标上来个二次加密)

    • 百度地图专属的
      坐标体系

 

经纬度

经纬度

经纬度是一种地理坐标系统,主要用来代表地球的球面坐标系,经纬度可以稳定地球的别样一个职责。南北方向的名为纬度,东西方向称为经度

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

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

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

坐标转换接口

​ 从GPS设备上一向获得到的中纬度 为gps
坐标,可透过以下接口转换为高德坐标

​ 该接口可支撑 baidu/mapbar/gps
坐标至高德坐标系下经纬度转换,详细参数表明及示例
可参见官网

  • 地址 与经纬度互查接口

​ 当无经纬度时,可用标准化地址(XX
省XX市XX区(县)XX街道(镇)XX路XX 号)选择以下接口 业内地址转换
为高德坐标
反查得到经纬度


详细参数参见官网

投影

投影

投影

做地图,投影的定义很首要。我们的地球是圈子的,地球的坐标是一个球面坐标,球面坐标是三维坐标(x、y、z),而我辈的地图是是二维的(x、y),需要将球面的三维坐标转换为平面的二维坐标。

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

高德常用API

  • marker类
    成立点图标

  • makercluster

    点聚合插件

  • map

    地图类

  • 提示: 高德API
    文档依旧比较清晰易读的,一般上的地图应用开发,依据开发文档都得以化解;在使用
    makercluster
    类时必要注意的是,聚合点的图标有个偏移量设置,须要进行恰当的调动,不然会现出
    图标的着力岗位偏移的问题。

墨卡托投影

墨卡托投影

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

墨卡托投影

地点三个国家各自是:俄国、澳大布兰太尔、中国、巴西、加拿大
我们将那多少个国家放在一个纬度,来相比那三个国家,发现距离并不太大。不过一旦放在上边那张图中,俄联邦顶好几个中国大小。

海外开发者开发了一个网站,这些网站可以将不一致国家拉到同一个纬度,那时候就能突显出真正比例的国度面积。
网站地址:http://thetruesize.com/

开放的地图资源

  • 数据类:

    • OpenStreetMap
      开放的矢量地图资源(地图界的维基百科,精度须求及实时性可能满足不断商用需要)

    • 地理空间数据云(国内免费的卫星图像下载)

  • 软件工具类

    • GDAL
      栅格图(卫星图) 与矢量图操作库,满意一般性 的上空操作:
      空间包涵、空间重叠等操作,数据格式转换等,也可进展卫星图的剪裁切割

    • QGIS
      地图突显软件,可满足日常的查阅地图 、图层叠加等操作。

    • GeoServer
      是OpenGIS Web
      服务器规范的J2EE落成的社区开源项目,利用GeoServer可以便宜地公布地图数据,也就是说利用
      GeoServer
      你可以搭建一个地形图服务器,只要您的多少周全、精细,可以创立一个看似于高德、百度的地形图服务。

  • 正式软件类:

    • ArcGIS(商业软件,正式版需求购置,国内有些破解版)

      美利坚合作国Eris
      集团宣布的一个商业软件,也是近来作用最齐全
      、最受欢迎的一个软件,可援救复杂的上空分析、图层叠加、路径选择、建模、生成地图图片(JPEG/png/em图等)。

      提供二次开发包,ArcEngine,
      集成了ArcGIS大致所有的机能,
      也有服务器发表的开销服务提供,ArcServer。

    • SuperMap(国内的商业软件,超图公司公布)

      国内的一框作用与ArcGIS
      类似的软件,也提供相应的二次开发包。

    • Envi
      (商业软件,正式版须要购置,国内有些破解版)

      海外的一款处理遥感图像的软件,常用作用:图像拼接、图像分类、图像增强等。

 

古德投影

古德投影

古德投影可以防止地图变形的题目,那种投影将地图分为多少个部分,然后沿赤道将多少个部分连接在联合。大家发现上边的格林(格林(Green))兰岛已经被分为两有的,那种投影并不相符用于支付,而且看起来效果也不太尴尬。

电子地图缩放原理不难介绍:

咱俩所看到的
百度、高德等电子地图到底是怎么样贯彻缩放展现分歧的情节的呢?

相信 我们都以为很好奇,在平日利用
百度或者 高德
地图时,当您查看某个地点时,地图商再次来到给你的感觉到似乎一张图纸,实际上我们的感到是对的,其实就是一张图片。

在开展缩放时,约等于您请求例外层级的图样,层级越大,图像细节越来越多,当网络顺遂或者地点缓存后,你会以为缩放得很谙习,好像那是一张不会失真的矢量图一样,其实不是,你看到的依旧栅格图
也就是图片,只是多张图片间的切换没被您意识而已。当网络较慢时,进行缩放时,有时你会合到屏幕是一贫如洗的,那就是因为图片并未加载过来。

这就是说,地图服务器这边又是怎么精晓,我伸手的是哪张图片呢?通过经纬度。经纬度有无限多少个结合,难道一个经纬度组合对应着一张图纸?那么就对应着不少张图纸,那眼看是不容许的。

实际,图商拔取的是一种
地图瓦片技术。所谓的地图瓦片,选拔划定范围的经纬度
对应一张图纸的法门,比如 大家刚刚说的 一个经纬度组合
不可以对应着一张图纸,因为图片量太大了,而且一个经纬度
也只是一个点,构不成线面。那么就让一张图片对应一个点名范围,比如图片1
对应着 (110,22)– (115,23)
一个经纬度范围,那么当用户传递的经纬度为(111,21.5)时
服务器那边就精晓回传 哪类图片给您了。

可是在同一个地点(同一个经纬度)再次来到的图样细节分裂等,有的细节很丰盛,可以看看楼块的概略,有的很简单,只看到多少个首要的建造和要紧道路,细节部分从没显得,那又是怎么五遍事呢?

那么那里须求追加一个层级的参数,表示您要层级丰盛的数目或者
粗略一点的数目,一般可以分为20个层级,从0 到20
,细节丰硕程度有增无减,同样大小的一张图纸展现的限量大小递减;
反之也创立。

所以电子地图的显得原理的关键技术“地图瓦片”,就是经纬度
范围和 图片的照耀关系,同时添加层级
这一参数,来支配一张图片对应的中纬度范围。那规范就兑现了,电子地图的缩放成效。

地点是对地图瓦片技术的一些概括介绍,其中
经纬度 范围 和 瓦片的相应关系,要采取到
投影知识,当前互联网电子地图选择的大旨是
墨卡托投影,关于投影知识,可以参照那篇博文

除此以外感兴趣的话,也足以看看
依据经纬度、层级 是如何和瓦片举办映射的

 

 高德地图请求实例:lv=13  表示13层级,后边随着的数字是 瓦片的号子(横向和
纵向)

图片 1

 

金字塔模型

金字塔模型

把一张世(英文名:)界地图展现到手机里是不可以的,所以就引入了金字塔模型的概念(也就是比例尺),我们可以按照不相同的缩放比例,突显差其余分辨率。

在地形图应用中,大家用手指缩放和拓宽地图,地图显示大小的转换,都是基于金字塔模型来协会瓦片图的。

瓦片坐标系

瓦片坐标系

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

瓦片越来越多就代表这一区域展现越详细,缩放比例也就越大。瓦片坐标系在2D和3D的场景下都会被利用,大家在网络不佳的情况下得以见到地图瓦片的加载进度以及瓦片的大小、位置。

坐标加密
  • CLLocationManager中的经纬度加密(WGS-84)
  • MKMapView中的经纬度加密(GCJ-02)
  • 高德SDK中的经纬度加密(GCJ-02)
  • 百度SDK中的经纬度加密(使用GCJ-02再次加密,叫做BD-09)

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

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

地图定位

地图定位

举手投足端固定方式根本有两种:GPSWi-Fi基站,但是androidiOS还不太一样,android可以让用户选取和安装那种定位方式,可是iOS是由系统为我们挑选的,大家一直不操作定位情势的权柄。iOS不容许有第三方定位,所以现在地图应用都是对系统定位举行的包裹。若是有GPS信号,iOS系统会预先挑选GPS措施固定,然后是Wi-Fi定位,如果Wi-Fi信号不佳就会接纳基站定位。

在固定中精确度最高的是GoogleGoogle利用大数据解析,记录每五遍选择Google地图的一直。下次重新定位时,直接按照Mac地址等音信进行分析,进步一定精确度。

正如悲催的一个问题不怕,有部分比较老的iOS机器,没有GPS永恒模块,例如有些老版本iPad,那种装置在平昔不Wi-Fi的状态下是力不从心稳定的。

地理编码和逆地理编码

以身作则图片

地理编码:即地明白析,由详细的结构化地址获得相应的经纬度信息,例如北京市海淀区中关村南大街27号的地方,就足以博得到一个唯一的中纬度新闻。

逆地理编码:即逆地明白析,由一个经纬度新闻得到一个结构化地址新闻,例如lng:116.31985,lat:39.959836经纬度,就足以获获得接近于地点的地理音讯。

iOS系统API、高德SDK、百度SDK中,都为大家提供了地理编码逆地理编码API,可是要求注意经纬度的变换,差异地图SDK重回的经纬度加密方法分歧,大家在流传经纬度参数和接受经纬度参数时,都需求做转换。

地图数据来源于

高德

四维图新

国内相比活跃的数据采集商紧假设高德和四维图新两家,百度没有数量收集资质(近日收购了道道通),所以数据紧要信赖于四维图新。

四维图新和国家测绘局合作相比较细致,数据来源于至关重若是国家测绘局提供,也有一些自己测绘的数目。高德测绘和航拍能力还不易,首要自己测绘数据,部分数据也借助国测局提供。数据测绘单位相互之间都有同盟,会相互购买自己从不的多寡。

在神州,谷歌地图或苹果地图等地图开发商,数据来自大概都是这两家商厦。

POI数据

POI

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

数据搜集能够因而车载(An on-board)GPS壁画机采集,或从服务性互联网商家抓取或进货,由于百度和高德提供了对外的SDK,通过用户使用地图SDK也可以赢得一些数量。

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

栅格-2D地图

珊格图

珊格图

2D场馆:轻地图应用,不难的任务分享、兴趣点标注、线路体现等。2D模型显示效果不太好,在缩放比例较小的情事下,看起来相比较模糊(缩放比例大一部分看起来清晰度还足以)。

栅格模型对于某一个地点的叙述,是经过广大层图片叠加组成的,每层代表差别音信(例如道路)。栅格模型貌似都会先渲染一个底图,然后是在底图的基础上叠加路况、POI等图层。

珊格图都是在服务器预处理的图纸,从服务器下载处理好的图形到地头开展拼接即可,由于下载到本地是图形,本地不可能再对图层举行转移。对于性能上来说,服务器举办图片合成性能消耗较大,不过客户端性能消耗相比较小,内存占用也正如小,用起来会相比流畅。

矢量-3D地图

矢量地图

矢量地图

3D场景:重地图应用,以LBS为基本作用,需求离线地图、更好的渲染效果、app内导航的。比如打车应用、出行导航类应用,3D模型渲染后的作用相比好,一般选取导航成效都不可以不用这些3D模型

矢量数据是从服务器将地图数据下载下来,然后在客户端实行合成绘制的,所以我们可以对地图的彰显举办控制,可定制性更强。矢量图看起来更佳清晰,渲染效果相比较好。不过矢量图对手机特性消耗很厉害,手机内存占用相比高,CPUGPU消耗都很大。对于服务器性能消耗就比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年十一月份出产了个性化地图,SDK提供了个性化地图模版,通过地图模版更改底图颜色和样式。从百度开发者平台下载到模版,通过地图模版可以修改本地、水系、草地、道路、铁路、客车、POI等颜色和体裁,然后调用SDK提供的艺术读取该模版即可。


地图产业链

地图产业链

外向计算

首先张图是一份14年的总计报告,那份总结报告总计不太圆满,部分导航应用尚未被含有在内。

在那份总结报告中,大家发现高德是唯一一个蒙面整条产业链的店家,在产业链的各样环节都存在高德的身影。

二〇一四年五月,阿里对高德完毕了15亿日元的收买,高德成为阿里旗下全资子集团。

相关文章

网站地图xml地图