内容正文:
6.2 POI数据的组织与应用
点击此处可添加副标题
熟悉POI数据的特点。
了解大规模数据以及大数据的典型数据组织与处理方式。
了解GeoHash算法。
引入:
网络地理信息服务离不开POI的支持
POI数据的概念:
POI 是 “Point of Interest”的缩写,可以翻译成 “兴趣点”,有些时候也叫作“Point of Information”,即“信息点”。电子地图上的一般用气泡图表示POI
地图上的POI:景点、公司、商场、饭店等
POI数据概念:
描述了空间实体或者区域的空间位置、名称地址等
基本信息:名称、类别、空间坐标信息(经纬度)、地址、电话、邮政编码等
衡量POI数据价值:空间位置的准确性和覆盖率、空间位置的数量
POI数据应用:
POI数据应用:
公交动态数据--行进线路名称、站点名称、到站时间等
基于GPS获取的公交数据重要应用:
路段行程速度估算
POI数据应用:
哈啰单车停车点
为城市公交线路设置提供科学依据
某条道路的24小时动态人流量,做出道路的改造方案、商业店铺选址决策等
POI数据组织与表示:
POI数据以表记录或点状数据集形式存在
1.点要素属于的矩形分幅的网格号
2.唯一标识号
3.点的POI分类编码
数据结构包含:
5.POI电话、地址
6.POI经纬度坐标等
4.POI名称
POI数据组织与表示:
针对这样的大数据进行处理,可以用什么技术来实现呢?
POI数据组织与表示:
Hadoop
提供了一种超大规模、高可靠性、高可扩展性的存储及计算海量数据的框架,可降低成本
基于HDFS文件系统的高容错性和高吞吐量特点存储空间影像数据
基于HBase的存储可靠性强、检索性能高、存储列可按需增加的特点存储地理信息专题数据
基于MapReduce的计算能力对地理信息中的各种数据进行搭建,对地理信息专题数据进行信息提取,提取有效信息
问题与讨论:
如何根据自己所在位置来查询附近50米的POI?
(如商家、景点)
枚举算法:计算位置与所有POI的距离,并保留距离小于50米的POI
经纬度计算公式复杂
算法效率低
空间索引:
空间索引是指依据空间对象的位置和形状或者空间对象之间的某种空间关系,按一定的顺序排列的一种数据结构
包含空间对象的概要信息,如:标识、外接矩形、指针
使空间操作快速访问对象,缩短查询时间
基于树结构
基于网格划分
基于网格划分
网格空间索引:
将一副地图的地理范围均等划分为M行N列的二维空间数据,得到M×N个小矩形网格区域。
判断哪些信息点落在矩形框中只需对A,B,C,D,E运算即可
不建立空间索引,所有POI遍历一遍
建立索引使得查询次数下降很多
每个网格索引为一个索引项
POI数据处理中的数据结构与算法分析:
POI数据操作:
连接POI数据库,将POI数据写入索引数据库
根据关键词查询获得结果集
二分查找:不适用与经纬度
B 树查找:查找效率没有提高
增加了对地理坐标优化的空间索引算法
POI数据处理中的数据结构与算法分析:
R树、K-D树、四叉树可高效查找临近点
存在数据冗余、不稳定的查改效率
GeoHash算法:二维-->一维
能够广泛引用与空间检索,尤其是POI数据查询的算法
GeoHash算法:
GeoHash算法由 Gustavo Niemeyer (大概于2013年)提出,目的是为地球上的每一个点(根据经纬度)确定一条短的URL 作为唯一的标识:
GeoHash算法把一个坐标点映射到一个字符串上,每一个字符串代表的就是一个以经纬度划分的矩形区域。
GeoHash算法特性:
层级空间数据结构,将地理位置用矩形网格划分,同一网格内地理编码相同;
可以表示任意精度的地理位置坐标,只要编码长度足够长;
编码前缀匹配的越长,地理位置越邻近。
GeoHash算法用类似四叉树的方法来寻求一个点,对经度和纬度不断地进行二分,最终确定到想要的精度
GeoHash算法规则:
0 1
01 11
00 10
第1次划分
第2次划分
010 011 110 111
000 001 100 101
第3次划分
0101 0111 1101 1111
0100 0110 1100 1110
0001 0011 1001 1011
0000 0010 1000 1010
第4次划分
GeoHash算法:
01011 01111 11011 11111
01010 01110 11010 11110
01001 01101 11001 11101
01000 01100 11000 11100
00011 00111 10011 10111
00010 00110 10010 10110
00001 00101 100