LBS是Location based service的简称,泛指一切基于用户或者设备位置提供的服务模式。
所以其核心内容在于位置和服务:
位置:用户在地理空间中唯一的编码,通常在地球上用经纬度来表示
服务:基于位置的服务包含的内容比较广,从基础的语义位置到导航,到周边例如新美大这种餐饮娱乐服务,都可以称之为基于位置服务。所以在美团有一个非常重要的部门叫做LBS平台业务部。
衍生出来,除了经典的地图应用、导航应用,LBS的包含范围非常之广:
天气,通过用户当前位置提供天气情况
餐饮娱乐等周边搜索和推荐(主动搜索)
近场服务等被动位置服务,即用户进入特定商场或者围栏即接受服务
以下介绍几个基础概念加深理解。
兴趣点POI:
兴趣点(英语:point of interest,通常缩写成POI)乃是电子地图上的某个地标、景点,用以标示出该地所代表的政府部门、
各行各业之商业机构(加油站、百货公司、超市、餐厅、酒店、便利商店、医院等)、旅游景点(公园、公共厕所等)、
古迹名胜、交通设施(各式车站、停车场、超速照相机、速限标示)等处所。
由于兴趣点必须包含名称、类别、经度、纬度、海拔等资料才能在电子地图上呈现,中国大陆亦翻译成信息点。
简单讲,就是空间上的一个点。 但是这个点可能还包含了其他很多的属性,例如餐饮的,公园的。
poi由于其空间可搜索性,在导航目的地选择,空间搜索当中充当了绝大部分的角色。
美团中的每一家店铺,我们都可以认为是一个poi,即是一个具有空间位置的信息实体。
对应的还有AOI(area of interest), 区别在于是面状数据(例如学校)。
但是值得注意的是,AOI与poi的概念存在一定的相对性,与当前的尺度有关系。例如在全国范围内搜索或者查看“北京大学”,则可以表示维北京市的一个点,
但是当讨论北京大学的边界或者围栏,则需要对齐边界数据作为AOI。
地理编码/逆地理编码
对地图类SDK有过应用或者了解的可能都知道这两个概念,因为这是高德、百度等地图公司的核心服务之一,国外则是google为主,ERIS、mapbox、HERE等都各自拥有自己的数据和服务。
Android端来讲,Geocoder这个类的底下代理,在国外是GMS(Google mobile service),国内则是高德百度。
地理编码
地理编码指的是在基础地图数据支持下由结构化地址信息转换为地球表面上相应位置(位置通常以经纬度坐标表示)的过程,
当用户输入上述地址之后,转成经纬度,那么这个经纬度有什么用呢?
主要是两个作用:
转成经纬度之后,地理空间算法可以进行诸如路径计算,距离计算,周边搜索等计算工作
地图标记等需要经纬度作为唯一位置确定标准 ,也就是正确的展示在地图上
具体的实现原理,即是提前存在一个结构化的全国或者全球的位置表进行matching,所以地理编码中提供的结构化地址信息结构越规范完整,地址内容越准确无误,转换的坐标精度越高。
逆地理编码
既然可以把地址转换为经纬度,那么反过来呢?
我们都知道GPS芯片可以输出经纬度(当然其他方法也可以输出定位结果,这一点后面细讲),那么我知道自己的经纬度位置如何转换为地址呢?
可以!也不可以!
为什么呢,通常我们可以把一个标准地址变为经纬度是可以的,因为这个映射关系是唯一的,但是反过来却不一定,无法满足这个唯一映射关系,主要基于两个原因:
一是定位本身是不那么精准的,也就是你的经纬度可能有漂移,所以换成很准的不太可能
二是 由于poi十分密集,比如我定位结果的是卓悦汇中的一个点,那么我反过来求的时候只能说你可能在卓悦汇里面的很多店之一。
当然,也不是没有办法唯一确定你到底在卓悦汇内的哪个店,这个就是室内定位(会在后面细讲)
因此,这个逆地理编码通常就变成了返回附近小范围内的一部分poi,aoi甚至路口这种信息。
当然了,大的粒度,例如你当前在福田区上梅林这个粒度的反编码是没有任何问题的! 因为你提取其中任何一个poi然后获得其地址即可获得。
空间搜索
当你每次打开大众点评,点击美食,其实就是一个空间搜索的过程。因为其实给你显示的都是周围的“美食”,
当然这个是最简单的,实际的工程应用和互联网公司肯定会结合你的爱好以及店铺评分等多种方式进行具体排序。
但是通常来讲,第一步的搜索是基础。
总结
可以说上述几种基础功能,组合成了多种多样的位置服务。至于路径规划和导航,我们放到后面细讲。
总结起来,LBS中的核心内容:
一是需要精准的位置,无论是搜索或者是用户的位置才能提供更好的服务 ,所以我们会评价有些手机定位很准,有些不准,因为这个准与不准极大的影响到位置服务的准确性。
二是需要丰富而精准的地理数据,例如POI数据,AOI数据和路网等。例如我们再地图上搜索一家餐厅搜索不到,那么明显这个位置服务是outdate的;
如果有但是标记在了错误的位置,那么显然会把我们误导到坑里去。