- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高效搭建LBSSNS结合的应用
高效搭建LBS与SNS结合的应用 作者: 李祎
PAGE6 / NUMPAGES7
高效搭建LBS与SNS结合的应用
作者 李祎
前言
本文追述LBS的前世今生,透视LBS拥有的优秀基因和继承的缺陷,从技术架构的视角对流行的LBS+SNS系统进行剖析。 -- 作者:李祎
LBS基于位置的服务(Location Based Services)一直是移动开发的热门领域,各种基于LBS的移动应用层出不穷。作为应用开发者如何不雾里看花,找到最好的切入点进行技术选型和设计应用? 本文追诉LBS的前世今生,透视LBS拥有的优秀基因和继承的缺陷,从技术架构的视角对流行的LBS与SNS结合的应用进行剖析, 为打算在LBS领域创业和创新的开发者提供一些技术参考。
前世 -- 源自GIS
就像认识一个人首先要了解他的家庭背景,我们先介绍一下LBS的父亲GIS 地理信息系统(Geographic Information System) 。 GIS发展于60年代,它的技术架构和传统的Client/Server信息系统没有太多区别。PC端应用程序通过网络连接后台数据库,查询和处理地理参照数据(例如大气层和地表等空间要素的位置和属性)。从技术角度来说构建一个地理信息系统,需要解决三个问题。数据如何保持,如何分析,以及怎么展现给用户。 GIS有多种展现形式,例如PC客户端,web网站(见图1),本文就不深入讨论,我们重点来研究数据如何保存,如何分析这两个问题。
图(1)
GIS将通过全球定位系统GPS(Global Positioning System)得到的数据,保存到空间数据库。空间数据库有别于传统的关系数据库,它补充了大量几何空间相关的功能。 主要解决存储空间中的对象数据(例如点,线和多边型);并对空间数据的特殊需求进行空间索引, 用最优的CPU和IO效率进行空间数据对象相关的查询。
空间分析是空间数据库的基础功能,它从空间物体的空间位置、联系等方面去对空间中的对象数据进行计算和空间检索。例如某个视图范围内的矩形检索,周边检索,同城搜索等空间分析功能。目前常见的商业关系数据库都有基于GIS的扩展,例如ORACLE 的spacial database ,MS SQL的空间扩展,PostgreSQL针对空间数据库的扩展 PostGIS 。常见的开源数据库 MongoDB和Mysql也支持空间数据类型的存储,但是对空间数据对象相关的检索和查询支持得非常少。
今生 -- LBS+SNS
现在如火如荼的社会化网络SNS大潮,改写着互联网的格局,也冲击着LBS应用领域。特别是智能手机应用的喷井式爆发,吸引更多的掘金者把目光聚焦到LBS和SNS结合这个领域来。例如在 2012年12月,高德与新浪微博宣布战略合作,用户在使用高德地图时就可以看到自己微博足迹的文字和图片信息。
那么要如何选择技术架构搭建LBS与SNS结合的应用,来解决位置信息的存储和分析这个两个核心问题?比较现实的选择是如图2A,用PostGIS作为POI兴趣点(Point of Interest)数据的存储和查询解决方案,用Mysql + Memcache支持SNS用户数据的存储和查询,通过用户ID和POI ID把LBS和SNS这两个看似独立的系统进行数据关联起来。例如世纪佳缘,陌陌(图2B),图钉等的用户定位,还有瓜子社区根据用户位置展现周边社区消息,都适合这种架构。 通过搜索查询空间数据库来找到附近的POI信息,然后从POI中关联的用户ID信息到SNS系统中去查询用户信息, 通过接口调用交给手机端显示。
图(2)A 图(2) B
下面用示例来展现如何实现“查询手机用户当前1公里范围内的陌生人”这个典型LBS与SNS结合的功能。 在PostGIS数据库中 创建表 sns_lbs_tire :
CREATE TABLE sns_lbs_tire (
gid serial NOT NULL,
poi_id character varying(100),
user_id integer,
geom geometry(Point,4326),
CONSTRAINT gid_pt_pkey PRIMARY KEY (gid)
)
WITH ( OIDS=FALSE );
表中user_id字段表示用户的唯一ID, poi_id表示POI的唯一ID, geom字段为空间数据库中的POINT类型存储POI的经纬度信息。 使用PostGIS空间数据库的分析函数,查询当前位置(-117.147605 32.715802)) 1公里范围内的所
文档评论(0)