CN103020130B - 一种面向城市路网的位置服务中支持区域的k最近邻查询方法 - Google Patents

一种面向城市路网的位置服务中支持区域的k最近邻查询方法 Download PDF

Info

Publication number
CN103020130B
CN103020130B CN201210470845.8A CN201210470845A CN103020130B CN 103020130 B CN103020130 B CN 103020130B CN 201210470845 A CN201210470845 A CN 201210470845A CN 103020130 B CN103020130 B CN 103020130B
Authority
CN
China
Prior art keywords
section
point
interest
boundary point
represent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210470845.8A
Other languages
English (en)
Other versions
CN103020130A (zh
Inventor
李巍
焦伟
李云春
刘春雷
蒋江涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN201210470845.8A priority Critical patent/CN103020130B/zh
Publication of CN103020130A publication Critical patent/CN103020130A/zh
Application granted granted Critical
Publication of CN103020130B publication Critical patent/CN103020130B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种面向城市路网的支持区域的k最近邻查询方法,该方法内嵌在LBS服务器中。该方法通过初始化区域模块、区域内部查询模块和区域外部查询模块执行完成。该方法采用重复查询冲突检测机制、共享机制和剪枝策略加速了查询过程,缩短了查询时间,提高了查询效率,保证了查询结果集的准确性。

Description

一种面向城市路网的位置服务中支持区域的k最近邻查询 方法
技术领域
本发明涉及时空数据库(Spatial-Temporal Database,STDB)中基于位置服务(Location-based Service,LBS)信息查询的技术领域,更特别地说,是指位置不精确的移动用户,被查询对象的位置精确时,通过k最近邻的查询方法来获得被查询对象的结果集。
背景技术
随着移动通信设备(如:智能手机、平板电脑等)的广泛流行,定位芯片也被内置到了越来越多的移动通信设备中,进而促使了基于位置服务的快速发展。移动用户为了使用基于位置的服务,须向服务提供商提供自身的位置信息与查询请求内容。参见图1所示,移动用户10向服务器端(LBS服务器20、位置提供商40)提出用户请求信息,然后服务器端依据用户请求信息向时空数据库(位置数据库30、地图数据库50)进行匹配关联信息的查找,从而得到关联的匹配数据返回,所述的关联匹配数据也就是查询结果信息;服务器端再将查询结果信息返回至移动用户10。一般地,所述关联匹配数据包括有被查询对象信息(可以是医院、商场、饭店、宾馆、移动用户、车等,也称为兴趣点)、路网数据信息(可以是由路段、交叉路口、路段长度组成信息,是由GPS测量得到信息,为已知数据,例如百度地图中的道路数据信息)。
时空数据库是空间数据库与时态数据库系统的、有机的结合体。空间数据指的是用于表示空间物体的位置、形状、大小和分布特征等诸方面信息的数据,适用于描述所有二维、三维和多维分布的关于区域的物体。空间数据的特点是不仅包括物体本身的空间位置及状态信息,还包括表示物体的空间关系(即拓扑关系)信息。属性数据指的是非空间数据,用于描述空间物体的性质,对空间物体进行语义定义。
在清华大学出版社于2009年2月第1版出版的《移动数据管理概念与技术》,孟小峰,丁治明著,第16章,第16.2节交通网络及时空轨迹数据模型中公开了“交通网络G的定义”。G=(Routes,Juncts),其中,Routes是道路的集合,Juncts是交叉路口的集合。
在科学出版社于2011年9月第1版出版的《时空数据库新理论》,郝忠孝著,第2章,第2.1节基于R-树的最近邻查询理论基础中公开了“空间数据库的最近邻查询是用来找出空间中距离一个给定点最近的对象即最近邻,最近邻的个数可以是一个,即NN查询;也可以是k个,即kNN查询”。
现有的基于位置的服务面临如下几个方面的问题:
(1)移动用户10的不确定位置信息:形成不确定位置信息的原因主要是定位技术的精确性较低,如3G的蜂窝定位服务和Wi-Fi定位服务;
(2)移动用户10非连续的位置更新:当移动用户10处于移动过程中,通过减少与服务提供商20的通信次数,不仅可以减小服务提供商20的查询开销,同样可以保护移动用户10的设备的电量和通信流量。
(3)移动用户10位置匿名处理:由于存在不可信的服务提供商20可能会泄露移动用户10的隐私,移动用户10不愿向服务提供商20提供其精确的位置信息。移动用户10通过匿名等隐私保护技术将其精确位置模糊到一个空间区域或路段集合中。
发明内容
针对现有城市路网中的k最近邻查询方法无法有效实现当移动用户位置为非精确位置时的查询请求,提出了一种面向城市路网的位置服务中支持区域的k最近邻查询方法。本发明方法实现了位置不精确的移动用户提出的k最近邻查询,并采用重复查询冲突检测机制、共享机制和剪枝策略,加速了查询过程,缩短查询时间,提高查询效率,同时可以保证查询结果的准确性。
本发明的一种面向城市路网的位置服务中支持区域的k最近邻查询方法,所述的面向城市路网的位置服务中支持区域的k最近邻查询方法内嵌在LBS服务器(20)中;其特征在于:所述的面向城市路网的位置服务中支持区域的k最近邻查询方法通过初始化区域模块(201)、区域内部查询模块(202)和区域外部查询模块(203)执行完成;
初始化区域模块(201)用于将接收到的查询请求内容SID进行初始化处理,获得查询队列集合QQS;
所述查询请求内容SID的格式为SID={ID,qbb,XQ,E,N},其中:ID表示移动用户的标识;qbb表示移动用户请求的兴趣点类型;XQ表示移动用户请求的兴趣点类型的个数;E表示移动用户提出请求时所在区域的路段集合,也称为内部路段集合,且E={e1,e2,…,eb},E∈ME,e1表示区域内的第1个路段,e2表示区域内的第2个路段,eb表示区域内的最后一个路段,b表示路段个数;N表示移动用户提出请求时所在区域路段边界点的集合,且N={n1,n2,…,nc,…,nt,…,nx},n1表示区域内的第1个边界点,n2表示区域内的第2个边界点,nc表示区域内的第c个边界点,nt表示区域内的第t个边界点,nx表示区域内的最后一个边界点,x表示边界点个数。
区域内部查询模块(202)第一方面依据查询内容Q对内部路段集合E进行遍历,并将得到的兴趣点添加至兴趣结果集R中;第二方面,使用佛洛依德算法,求出边界点集N中任意两个边界点之间的距离;第三方面将遍历后的内部路段加入到已查询路段集合SS中。
所述边界点集N中任意两个边界点之间距离的集合,即边边距离集合
NN = ( n 1 n c : n 1 → n c ) , · · · , ( n 1 n t : n 1 → n t ) , · · · ( n 2 n c : n 2 → n c ) , · · · , ( n 2 n t : n 2 → n t ) , · · · ( n c n t : n c → n t ) ;
所述兴趣结果集中;mf表示兴趣结果集R中所包含的兴趣点的个数。
该兴趣结果集R可以被边界点集N中任意边界点访问。
区域外部查询模块(203)将查询队列集合QQS进行路网的扩展查询,并将得到的兴趣点添加至兴趣结果集R中,最后将兴趣结果集R返回给移动用户。
本发明k最近邻查询方法的优点在于:
①本发明支持路网环境中的k近邻查询请求,相对欧式空间的查询能够得到更加准确的距离值,方便移动用户安排出行路线。
②使用本方法可以满足位置服务中用户位置不精确或者用户经过匿名保护后提出的k近邻查询响应,从而保护用户在使用位置服务时的隐私安全。本发明不仅可以支持用户采用可信第三方进行匿名的方法访问服务提供商的k近邻服务,还可以支持用户采用分布式的匿名方法访问服务提供商的k近邻服务。
③由于采用重复查询冲突检测机制、共享机制和剪枝策略,加速了查询过程,提高了查询效率。
附图说明
图1是移动用户的信息查询结构框图。
图2是本发明位置服务器中采用k最近邻查询方法的结构框图。
图3A是城市局部的二维平面地图。
图3B是城市局部的带有坐标位置信息的二维平面地图。
图3C是城市局部的路网拓扑示意图。
图3D是显示了移动用户所在区域的城市局部的路网拓扑示意图。
图4是本发明区域外部查询的流程图。
具体实施方式
下面将结合附图对本发明做进一步的详细说明。
本发明是针对城市路网结构中的位置服务中支持区域的k近邻查询方法,该方法采用重复查询冲突检测机制、共享机制和剪枝策略加速了查询过程,缩短查询时间,提高查询效率,同时可以保证查询结果集的准确性。本发明的k近邻查询方法内嵌在LBS服务器20中。参见图2所示,该k近邻查询方法通过初始化区域模块201、区域内部查询模块202和区域外部查询模块203执行完成。本发明应用的k近邻查询方法采用Java语言(J2EE 6.0)编程实现。
在本发明中,初始化区域模块201用于将接收到的查询请求内容SID进行初始化处理,获得查询队列集合QQS。
在本发明中,区域内部查询模块202第一方面依据查询内容Q对内部路段集合E进行遍历,并将得到的兴趣点添加至兴趣结果集R中;第二方面,使用佛洛依德算法,求出边界点集N中任意两个边界点之间的距离;第三方面将遍历后的内部路段加入到已查询路段集合SS中。
在本发明中,区域外部查询模块203将查询队列集合QQS进行路网的扩展查询,并将得到的兴趣点添加至兴趣结果集R中,最后将兴趣结果集R返回给移动用户。
例如,在一个基于位置服务的查询区域里(如图3A所示),北四环西路为一个路段,学院路为一个路段,志新路为一个路段,志新东路为一个路段,花园北路为一个路段,花园东路为一个路段等。如学院路的起点和终点是通过地理坐标来表示,而学院路的路段长度是国家市政测量后给出在查询地图中的相对距离。
参见图3B所示,在城市路网中,多个路段构成一个城市路网ME={me1,me2,…,meLD},其中,me1表示城市路网中的第一个路段;me2表示城市路网中的第二个路段;meLD表示城市路网中的最后一个路段,也称为任意一个路段。LD表示路段的标识。任意路段meLD都有两个端点(即起点r起点(x,y)、终点r终点(x,y))以及路段的长度r长度,在本发明中,路段是没有定义方向的,即一个路段的起点也可以是另一条路段的终点,反之,一个路段的终点也可以是另一条路段的起点。
参见图3A所示,例如查询区域内的交叉路口包含:学院路交叉路口、学院桥交叉路口、梦溪宾馆交叉路口、志新北里小区交叉路口等。
参见图3B所示,在城市路网中,交叉路口记为Nodejc,jc是交叉路口的标识,该交叉路口包含的信息有Nodejc={jc,LKjc(x,y),LKSjc};
LKjc(x,y)表示交叉路口Nodejc的位置,x表示经度坐标值,y表示纬度坐标值;
LKSjc表示与交叉路口Nodejc相连的所有路段集合,采用集合形式表达为LKSjc={mee1,mee2,…,meeaa},mee1表示与交叉路口Nodejc相连的第一条路段,mee2表示与交叉路口Nodejc相连的第二条路段,meeaa表示与交叉路口Nodejc相连的最后一条路段,也称为任意一条与交叉路口Nodejc相连的路段,aa表示与交叉路口Nodejc相连的路段的个数,若aa取值为3时,说明与交叉路口Nodejc相连的有3条路段,则LKSjc={mee1,mee2,mee3}。LKSjc∈ME。
参见图3A所示,例如,当用户请求的兴趣点类型选取为大学时,则区域内将有北京航空航天大学、北京科技大学、中国地质大学、北京语言大学;用户请求的兴趣点类型记为q1,则区域内的与q1关联的北京航空航天大学记为北京科技大学记为中国地质大学记为北京语言大学记为
例如,当用户请求的兴趣点类型选取为写字楼时,则区域内将有银谷大厦、科技大楼、北京奥运大厦、世宁大厦、科群大厦、方兴大厦、万和大厦等;用户请求的兴趣点类型记为q2,则区域内的与q2关联的银谷大厦记为科技大楼记为北京奥运大厦记为世宁大厦记为科群大厦记为方兴大厦记为万和大厦记为
例如,当用户请求的兴趣点类型选取为医院时,则区域内将有北航医院、北京大学第三医院、北京大学第六医院等。用户请求的兴趣点类型记为q3,则区域内的与q3关联的北航医院记为北京大学第三医院记为北京大学第六医院记为
在本发明中,通过上述的定义,任意一路段meLD上存在有不同的兴趣点记为Q表示用户请求的兴趣点类型的集合,简称为兴趣点类型集合;F表示与Q关联的某一类型的兴趣点集合,简称为兴趣点集合。
所述兴趣点类型集合表达为Q={q1,q2,…,qbb},q1表示第一种兴趣点类型,q2表示第二种兴趣点类型,qbb表示最后一种兴趣点类型,也称为任意一种兴趣点类型,bb表示兴趣点类型的个数。
所述兴趣点集合表达为F={f1,f2,…,fcc},f1表示与Q关联的第一个兴趣点,f2表示与Q关联的第二个兴趣点,fcc表示与Q关联的最后一个兴趣点,也称为与Q关联的任意一个兴趣点,cc表示兴趣点个数。
参见图3B所示,例如:若q1为大学时,f1为北京航空航天大学,北京航空航天大学的坐标值从地图数据库50中查询得到,坐标表示f1(x,y)=(116.3474,39.9849),所属路段meLD为相对距离最近的路段,即学院路。
例如:若q1为大学时,f2为北京科技大学,北京科技大学的坐标值从地图数据库50中查询得到,坐标表示f2(x,y)=(116.3573,39.9910),所属路段meLD为相对距离最近的路段,即学院路。
例如:若q1为大学时,f3为中国地质大学,中国地质大学的坐标值从地图数据库50中查询得到,坐标表示f3(x,y)=(116.3498,39.9901),所属路段meLD为相对距离最近的路段,即学院路。
例如:若q1为大学时,f4为北京语言大学,北京语言大学的坐标值从地图数据库50中查询得到,坐标表示f4(x,y)=(116.3469,39.9951),所属路段meLD为相对距离最近的路段,即成府路。
在本发明中,通过对兴趣点的地理位置及所属路段的说明,可得任意一路段meLD上存在的兴趣点记为fcc(x,y)表示fcc所在的地理位置,x表示经度坐标值,y表示纬度坐标值,qbb表示兴趣点的类型。
参见图3C、图3D所示,为了实现数字化的介绍城市路网,本发明将选取的城市局部二维平面信息转换成城市局部路网拓扑结构。在路网拓扑结构图3C中,将一个城市路网环境抽象为多个交叉路口与多条路段,黑色圆点代表交叉路口,线段代表路段,三角形代表兴趣点。图中,交叉路口有Node1、Node2、Node3、Node4、Node5、Node6;路段有me1、me2、me3、me4、me5、me6、me7;兴趣点有
参见图3D所示,当移动用户向LBS服务器提出查询请求后,移动用户所以在区域的路段用虚线代表,该区域的边界点用空心圆代表。路网拓扑结构由图3C转换成图3D所示。图中,移动用户所在路段me4、me6和me7将转换为区域内部的路段,即e1、e2和e3;区域内部路段e1、e2和e3的边界点为n1、n2和n3,即为交叉路口Node2、Node4和Node6
在本发明中涉及的两个交叉路口的距离不是欧式空间的直线距离,而是采用如下路程长度表示:(一)直接相连的两个交叉路口的距离是指从地图数据库50中提取出的路程长度。(二)非直接相连的两个交叉路口的距离是以途经其他交叉路口的多个路段距离长度之和,每个路段的路程长度是从地图数据库50中提取出来的。路段长度是国家市政测量后给出在查询地图中的相对距离。
参见图1、图2所示,当移动用户10向LBS服务器20提出请求信息10A时,LBS服务器20将按照本发明提出的“面向城市路网的位置服务中支持区域的k最近邻查询方法”进行区域内、区域外的扩展查询。
在本发明中,移动用户的请求信息10A的格式为SID={ID,qbb,XQ,E,N},其中:
ID表示移动用户的标识,或者称为用户身份;
qbb表示移动用户请求的兴趣点类型;
XQ表示移动用户请求的兴趣点类型的个数;
E表示移动用户提出请求时所在区域的路段集合,也称为内部路段集合,且E={e1,e2,…,eb},E∈ME,e1表示区域内的第1个路段,e2表示区域内的第2个路段,eb表示区域内的最后一个路段,b表示路段个数;图3C中的虚线示出;
N表示移动用户提出请求时所在区域路段边界点的集合,即边界点集合N={n1,n2,…,nc,…,nt,…,nx},n1表示区域内的第1个边界点,n2表示区域内的第2个边界点,nc表示区域内的第c个边界点,nt表示区域内的第t个边界点,nx表示区域内的最后一个边界点,x表示边界点个数。在本发明中,nc,nt统称为任意边界点,是为了说明任意两个边界点之间距离时便于叙述与表示。
如图3D所示,内部路段集合E包括有e1,e2,e3,边界点集合N包括有n1,n2,n3
参见图2所示,在LBS服务器20中面向城市路网的位置服务中支持区域的k最近邻查询方法的执行模块包括有:初始化区域模块201、区域内部查询模块202和区域外部查询模块203。
下面将对每个模块进行详细的说明:
(1)初始化区域模块201
初始化区域模块201用于将接收到的请求信息SID={ID,qbb,XQ,E,N}进行初始化处理,获得查询队列集合QQS。
初始化处理,是指为边界点集合N={n1,n2,…,nc,…,nt,…,nx}中的任意一个边界点nc设置一个查询队列然后对所述的查询队列 Q S n c = { S B n c , S D n c , a n c , N E n c } 进行初始赋值。
查询边界赋值为正无穷大;
查询距离赋值为0;
边界点nc查找到的兴趣点的个数赋值为0;
被查询路段集合赋值为关联路段信息,关联路段信息是指与nc相连的所有的区域外部路段。
查询队列 Q S n c = { S B n c , S D n c , a n c , N E n c } 的赋值采用表格表达为:
参见图3D所示,边界点n1的被查询路段集合为{[me1,(n1→me1)],[me2,(n1→me2)]},初始时区域内边界点n1与移动用户所在me1路段之间距离(简称为内点-路段距离,即n1→me1距离)赋值为0,初始时区域内边界点n1与移动用户所在me2路段之间距离(简称为内点-路段距离,即n1→me2距离)赋值为0。
在查询队列表示边界点nc的查询边界,即边界点nc到距离边界点nc最近的第XQ个兴趣点的路网距离长度;表示边界点nc中的第一条路段的路网距离长度,即 表示边界点nc查找到的兴趣点的个数;表示将被边界点nc查询的路段集合(简称为被查路段集合),且 N E n c = [ road 1 n c , ( n c → road 1 n c ) ] , [ road 2 n c , ( n c → road 2 n c ) ] , · · · , [ road d n c , ( n c → road d n c ) ] , 表示路网中的位于区域外部的将被边界点nc查询的第1条路段(简称为第1条被查路段),表示路网中的位于区域外部的将被边界点nc查询的第2条路段(简称为第2条被查路段),表示路网中的位于区域外部的将被边界点nc查询的第d条路段(简称为第d条被查路段,也称为最后一条被查路段),d表示被查路段的个数。
表示边界点nc到路段的距离值;
表示边界点nc到路段的距离值;
表示边界点nc到路段的距离值。
在本发明中,被查路段集合 N E n c = [ road 1 n c , ( n c → road 1 n c ) ] , [ road 2 n c , ( n c → road 2 n c ) ] , · · · , [ road d n c , ( n c → road d n c ) ] 中的被查路段为升序排列,排列在最前的路段是与边界点nc距离最短的路段,排列在最后的路段是与边界点nc距离最长的路段。
依据边界点nc的查询队列同理可得,第1个边界点n1的查询队列为第2个边界点n2的查询队列为多个边界点N={n1,n2,…,nc}的查询队列构成边界点队列集合 也表示任意边界点nc的查询队列。
边界点n1的查询队列为表示边界点n1的查询边界;表示边界点n1的查询距离;表示边界点n1查找到的兴趣点的个数;表示将被边界点n1查询的路段集合(简称为被查路段集合),且 N E n 1 = [ road 1 n 1 , ( n 1 → road 1 n 1 ) ] , [ road 2 n 1 , ( n 1 → road 2 n 1 ) ] , · · · , [ road d n 1 , ( n 1 → road d n 1 ) ] , 表示路网中的位于区域外部的将被边界点n1查询的第1条路段(简称为第1条被查路段),表示路网中的位于区域外部的将被边界点n1查询的第2条路段(简称为第2条被查路段),表示路网中的位于区域外部的将被边界点n1查询的第d条路段(简称为第d条被查路段,也称为最后一条被查路段)。
边界点n2的查询队列为 Q S n 2 = { S B n 2 , S D n 2 , N E n 2 , a n 2 } 表示边界点n2的查询边界;表示边界点n2的查询距离;表示边界点n2查找到的兴趣点的个数;表示将被边界点n2查询的路段集合(简称为被查路段集合),且 N E n 2 = [ road 1 n 2 , ( n 2 → road 1 n 2 ) ] , [ road 2 n 2 , ( n 2 → road 2 n 2 ) ] , · · · , [ road d n 2 , ( n 2 → road d n 2 ) ] 表示路网中的位于区域外部的将被边界点n2查询的第1条路段(简称为第1条被查路段),表示路网中的位于区域外部的将被边界点n2查询的第2条路段(简称为第2条被查路段),表示路网中的位于区域外部的将被边界点n2查询的第d条路段(简称为第d条被查路段,也称为最后一条被查路段)。
边界点n3的查询队列为 Q S n 3 = { S B n 3 , S D n 3 , N E n 3 , a n 3 } 表示边界点n3的查询边界;表示边界点n3的查询距离;表示边界点n3查找到的兴趣点的个数;表示将被边界点n3查询的路段集合(简称为被查路段集合),且 N E n 3 = [ road 1 n 3 , ( n 3 → road 1 n 3 ) ] , [ road 2 n 3 , ( n 3 → road 2 n 3 ) ] , · · · , [ road d n 3 , ( n 3 → road d n 3 ) ] 表示路网中的位于区域外部的将被边界点n3查询的第1条路段(简称为第1条被查路段),表示路网中的位于区域外部的将被边界点n3查询的第2条路段(简称为第2条被查路段),表示路网中的位于区域外部的将被边界点n3查询的第d条路段(简称为第d条被查路段,也称为最后一条被查路段)。
(2)区域内部查询模块202
区域内部查询模块202第一方面依据接收到的请求信息SID={ID,qbb,XQ,E,N}中的兴趣点类型qbb对内部路段集合E={e1,e2,…,eb}进行遍历,并将得到的兴趣点加入到兴趣结果集R;第二方面使用佛洛依德算法,求出边界点集N中任意两个边界点nc与nt之间的距离nc→nt,简称为边边距离nc→nt;第三方面将遍历后的内部路段加入到已查询路段集合SS={e1,e2…}中,SS∈ME。
所述边界点集N中任意两个边界点之间距离的集合,即边边距离集合 NN = ( n 1 n c : n 1 → n c ) , · · · , ( n 1 n t : n 1 → n t ) , · · · ( n 2 n c : n 2 → n c ) , · · · , ( n 2 n t : n 2 → n t ) , · · · ( n c n t : n c → n t ) ;
所述兴趣结果集 R = [ poi f 1 q bb , ( n 1 → poi f 1 q bb , n 2 → poi f 1 q bb , · · · , n c → poi f 1 q bb ) ] , [ poi f 2 q bb , ( n 1 → poi f 2 q bb , n 2 → poi f 2 q bb , · · · , n c → poi f 2 q bb ) ] , · · · , [ poi f cc q bb , ( n 1 → poi f cc q bb , n 2 → poi f cc q bb , · · · , n c → poi f cc q bb ) ] , mf 中;mf表示兴趣结果集R中所包含的兴趣点的个数。
在本发明中,该兴趣结果集R可以被边界点集N中任意边界点访问。
所述的边边距离集合 NN = ( n 1 n c : n 1 → n c ) , · · · , ( n 1 n t : n 1 → n t ) , · · · ( n 2 n c : n 2 → n c ) , · · · , ( n 2 n t : n 2 → n t ) , · · · ( n c n t : n c → n t ) 中:
(n1nc:n1→nc),…,(n1nt:n1→nt)表示边界点n1到每个边界点之间的距离,则n1nc:n1→nc中n1nc表示两个边界点n1、nc,n1→nc表示n1、nc之间的距离值;n1nt:n1→nt中n1nt表示两个边界点n1、nt,n1→nt表示n1、nt之间的距离值;
(n2nc:n2→nc),…,(n2nt:n2→nt)表示边界点n2到每个边界点之间的距离,则n2nc:n2→nc中n2nc表示两个边界点n2、nc,n2→nc表示n2、nc之间的距离值;n2nt:n2→nt中n2nt表示两个边界点n2、nt,n2→nt表示n2、nt之间的距离值;
ncnt:nc→nt表示任意边界点nc到另一任意边界点nt之间的距离,nc→nt表示nc、nt之间的距离值。
所述的兴趣结果集 R = [ poi f 1 q bb , ( n 1 → poi f 1 q bb , n 2 → poi f 1 q bb , · · · , n c → poi f 1 q bb ) ] , [ poi f 2 q bb , ( n 1 → poi f 2 q bb , n 2 → poi f 2 q bb , · · · , n c → poi f 2 q bb ) ] , · · · , [ poi f cc q bb , ( n 1 → poi f cc q bb , n 2 → poi f cc q bb , · · · , n c → poi f cc q bb ) ] , mf 中:
表示查询到的一个兴趣点的标识, [ poi f 1 q bb , ( n 1 → poi f 1 q bb , n 2 → poi f 1 q bb , · · · , n c → poi f 1 q bb ) ] 表示兴趣点到达每一个边界点的距离,表示边界点n1到达兴趣点的距离;表示边界点n2到达兴趣点的距离;表示边界点nc到达兴趣点的距离;
表示查询到的一个兴趣点的标识, [ poi f 2 q bb , ( n 1 → poi f 2 q bb , n 2 → poi f 2 q bb , · · · , n c → poi f 2 q bb ) ] 表示兴趣点到达每一个边界点的距离,表示边界点n1到达兴趣点的距离;表示边界点n2到达兴趣点的距离;表示边界点nc到达兴趣点的距离;
表示查询到的一个兴趣点的标识, [ poi f cc q bb , ( n 1 → poi f cc q bb , n 2 → poi f cc q bb , · · · , n c → poi f cc q bb ) ] 表示兴趣点到达每一个边界点的距离,表示边界点n1到达兴趣点的距离;表示边界点n2到达兴趣点的距离;表示边界点nc到达兴趣点的距离;
在本发明中,区域内部查询模块202以区域内的兴趣点全部加入到兴趣结果集R中;并采用佛洛依德算法,加快了区域内边界点之间距离的计算,同时使得查询请求更加的清晰明了。
(3)区域外部查询模块203
步骤203-0:一方面接收初始化区域模块201输出的边界点队列集合QQS;另一方面接收区域内部查询模块202输出的兴趣结果集R、边边距离集合NN和已查询路段集合SS;
步骤203-1:判断QQS中的所有的队列是否全部达到终止条件,若全部终止则查询完成,输出查询结果给移动用户;
若未达到全部终止条件,未达到终止条件的队列继续执行步骤203-2;
终止条件A为:每个边界点队列中 a n c ≥ XQ ;
终止条件B为:某一个边界点队列的查询范围大于QQS中每一个队列的查询边界;
查询队列满足上述的两个终止条件之一即可终止该队列的查询。
步骤203-2:判断是否为首次运行区域外部路段扩展查询,若是,则从边界点队列集合QQS中随机选出一个查询队列并转入步骤203-3;
若非首次进行区域外部查询,则从边界点队列集合QQS中选取查询距离最短的那个查询队列,并将选出的距离最短的查询队列转入步骤203-3;
在本发明中,步骤203-2采用了最优优先查询的方法,这个方法能够使最短的路段优先的被查询到,提高了查询效率。
步骤203-3:将R中的兴趣点个数mf提取出;比较兴趣点个数mf与用户请求兴趣点的个数XQ,若mf≥XQ时,更新中的每一个查询队列中的查询边界,即得到更新后的边界点队列集合 QQS ′ = { Q S n 1 ′ , Q S n 2 ′ · · · , Q S n c ′ } , 转入步骤203-4;若mf<XQ时,直接转入步骤203-4;
在本发明中,对查询边界的更新采用了与mf相匹配的原则,若mf=8且XQ=5时,对中的每一个查询队列中的查询边界进行更新,更新采用了距离边界点自身的第5个最近兴趣点的距离长度;更新后的转换为 QQS ′ = { Q S n 1 ′ , Q S n 2 ′ · · · , Q S n c ′ } ,
步骤203-4:判断查询队列是否达到终止条件,若达到终止条件,则终止查询队列的查询,转入203-1;若未达到终止条件则转入步骤203-5。
步骤203-5:判断查询队列中的的值是否发生变化,若未发生变化则进入步骤203-6;若发生了变化则进入步骤203-2;
步骤203-6:将查询队列的被查询路段集合中的第一个路段road取出,由于采用了升序排列,排在第一个的路段为距离边界点nc的最短路段;
步骤203-7:判断路段road是否在已查询路段集合SS中,若在已查询路段集合SS中,则进行步骤203-8;若不在已查询路段集合SS中,则转入步骤203-10;
在本发明中,此步骤加入了重复查询冲突检测机制,若发生了重复查询则可以进行剪枝操作。
步骤203-8:如果路段road包含了在兴趣结果集R中的兴趣点则根据边边距离集合NN对兴趣结果集R中的兴趣点到每个边界点的距离进行重新计算;若小于更新前的距离则将 [ poi f cc q bb , ( n 1 → poi f cc q bb , n 2 → poi f cc q bb , · · · , n c → poi f cc q bb ) ] 赋值给兴趣结果集R中兴趣点所对应的距离值,转入步骤203-9;
如果路段road中没有兴趣点,直接转入步骤203-9;
步骤203-9:将路段road从查询队列中的被查询路段集合移除,进行剪枝操作,转入步骤203-5;
在本发明中,这样与road相邻的路段及后续路段都将不再被边界点nc查询,步骤203-8和步骤203-9完成了剪枝操作,加快了查询的速度。
步骤203-10:(A)在路段road上进行兴趣点的查询,如果发现了新的兴趣点则加入到兴趣结果集R中并进行兴趣更新,并以加1的方式更新中的然后从被查询路段集合中移出该road,则将与road相连的路段road相连添加到查询队列中;同时将road加入到已查询路段集合SS={road}中;然后更新查询队列所述更新的原则为:将的值更新为边界点nc到达中的第一条路段的距离;转入步骤203-1进行下一次循环;
(B)在road上进行兴趣点的查询,如果在road上没有发现兴趣点,则从中移出该road,并将与road相连的路段road相连添加到查询队列中;同时将road加入到已查询路段集合SS={road}中;然后更新查询队列所述更新的原则为:将的值更新为边界点nc到达中的第一条路段的距离;转入步骤203-1进行下一次循环。
所以兴趣更新的原则为:首先将兴趣结果集R中兴趣个数加1(即mf+1);然后,则根据边边距离集合NN对兴趣结果集R中的兴趣点到每个边界点的距离进行计算;并将 [ poi f cc q bb , ( n 1 → poi f cc q bb , n 2 → poi f cc q bb , · · · , n c → poi f cc q bb ) ] 赋值给兴趣结果集R中兴趣点所对应的距离值,实现兴趣更新。
在本发明中,区域外部查询采用了重复查询冲突检测机制和剪枝策略,可以有效的减少查询路段的数量,加快查询的速度;采用共享机制,将某一个边界点查询得到的兴趣点共享给其他的边界点,优化查询终止条件,提前结束查询,同样提高了查询效率。
本发明的查询方法是以移动用户向LBS服务器请求及反馈信息的处理。由于是进行k近邻查询,移动用户在发出查询时需要给出参数k的数值。移动用户主要分为两种:第一种,经匿名处理后的移动用户,匿名处理为该移动用户产生一个路网中的匿名区域。第二种,只包含一个无法进行精确定位的移动用户,移动用户将自己所在的位置模糊为一个区域。这两种情况的区域经过处理后,抽象为内部路段的集合和边界点集合。移动用户将查询内容发送给LBS服务器,LBS服务器执行k近邻查询处理,在进行k近邻查询时,将查询得到的结果集合,返回给移动用户。

Claims (5)

1.一种面向城市路网的位置服务中支持区域的k最近邻查询方法,所述的面向城市路网的位置服务中支持区域的k最近邻查询方法内嵌在LBS服务器(20)中;其特征在于:所述的面向城市路网的位置服务中支持区域的k最近邻查询方法通过初始化区域模块(201)、区域内部查询模块(202)和区域外部查询模块(203)执行完成;
初始化区域模块(201)用于将接收到的查询请求内容SID进行初始化处理,获得查询队列集合QQS;
所述查询请求内容SID的格式为SID={ID,qbb,XQ,E,N},其中:ID表示移动用户的标识;qbb表示移动用户请求的兴趣点类型;XQ表示移动用户请求的兴趣点类型的个数;E表示移动用户提出请求时所在区域的路段集合,也称为内部路段集合,且E={e1,e2,…,eb},E∈ME,e1表示区域内的第1个路段,e2表示区域内的第2个路段,eb表示区域内的最后一个路段,b表示路段个数;N表示移动用户提出请求时所在区域路段边界点的集合,且N={n1,n2,…,nc,…,nt,…,nx},n1表示区域内的第1个边界点,n2表示区域内的第2个边界点,nc表示区域内的第c个边界点,nt表示区域内的第t个边界点,nx表示区域内的最后一个边界点,x表示边界点个数;多个路段构成一个城市路网ME={me1,me2,…,meLD},其中,me1表示城市路网中的第一个路段,me2表示城市路网中的第二个路段,meLD表示城市路网中的最后一个路段,LD表示路段的标识;任意路段meLD都有两个端点,即起点r起点(x,y)、终点r终点(x,y),以及路段的长度r长度
区域内部查询模块(202)第一方面依据查询内容Q对内部路段集合E进行遍历,并将得到的兴趣点添加至兴趣结果集R中;第二方面,使用佛洛依德算法,求出边界点集N中任意两个边界点之间的距离;第三方面将遍历后的内部路段加入到已查询路段集合SS中;
所述边界点集N中任意两个边界点之间距离的集合,即边边距离集合
(n1nc:n1→nc),…,(n1nt:n1→nt)表示边界点n1到每个边界点之间的距离,则n1nc:n1→nc中n1nc表示两个边界点n1、nc,n1→nc表示n1、nc之间的距离值;n1nt:n1→nt中n1nt表示两个边界点n1、nt,n1→nt表示n1、nt之间的距离值;
(n2nc:n2→nc),…,(n2nt:n2→nt)表示边界点n2到每个边界点之间的距离,则n2nc:n2→nc中n2nc表示两个边界点n2、nc,n2→nc表示n2、nc之间的距离值;n2nt:n2→nt中n2nt表示两个边界点n2、nt,n2→nt表示n2、nt之间的距离值;
ncnt:nc→nt表示任意边界点nc到另一任意边界点nt之间的距离,nc→nt表示nc、nt之间的距离值;
所述兴趣结果集中;mf表示兴趣结果集R中所包含的兴趣点的个数;
表示查询到的一个兴趣点的标识,表示兴趣点到达每一个边界点的距离,表示边界点n1到达兴趣点的距离;表示边界点n2到达兴趣点的距离;表示边界点nc到达兴趣点的距离;
表示查询到的一个兴趣点的标识,表示兴趣点到达每一个边界点的距离,表示边界点n1到达兴趣点的距离;表示边界点n2到达兴趣点的距离;表示边界点nc到达兴趣点的距离;
表示查询到的一个兴趣点的标识,表示兴趣点到达每一个边界点的距离,表示边界点n1到达兴趣点的距离;表示边界点n2到达兴趣点的距离;表示边界点nc到达兴趣点的距离;
该兴趣结果集R可以被边界点集N中任意边界点访问;
区域外部查询模块(203)将查询队列集合QQS进行路网的扩展查询,并将得到的兴趣点添加至兴趣结果集R中,最后将兴趣结果集R返回给移动用户。
2.根据权利要求1所述的面向城市路网的位置服务中支持区域的k最近邻查询方法,其特征在于:初始化区域模块(201)用于将接收到的请求信息SID={ID,qbb,XQ,E,N}进行初始化处理,获得查询队列集合QQS时的初始化处理,是指为任意一个边界点nc设置一个查询队列然后对所述的查询队列进行初始赋值;其中,
查询边界赋值为正无穷大;
查询距离赋值为0;
边界点nc查找到的兴趣点的个数赋值为0;
被查询路段集合赋值为关联路段信息,关联路段信息是指与nc相连的所有的区域外部路段。
3.根据权利要求2所述的面向城市路网的位置服务中支持区域的k最近邻查询方法,其特征在于:被查路段集合中的被查路段为升序排列,排列在最前的路段是与边界点nc距离最短的路段,排列在最后的路段是与边界点nc距离最长的路段;表示路网中的位于区域外部的将被边界点nc查询的第1条路段,表示路网中的位于区域外部的将被边界点nc查询的第2条路段,表示路网中的位于区域外部的将被边界点nc查询的第d条路段,d表示被查路段的个数。
4.根据权利要求1所述的面向城市路网的位置服务中支持区域的k最近邻查询方法,其特征在于:区域外部查询模块(203)的查询步骤为:
步骤203-0:一方面接收初始化区域模块(201)输出的边界点队列集合QQS;另一方面接收区域内部查询模块(202)输出的兴趣结果集R、边边距离集合NN和已查询路段集合SS;
步骤203-1:判断QQS中的所有的队列是否全部达到终止条件,若全部终止则查询完成,输出查询结果给移动用户;
若未达到全部终止条件,未达到终止条件的队列继续执行步骤203-2;
终止条件A为:每个边界点队列中 表示边界点nc的查询边界;表示边界点nc的查询距离;表示边界点nc查找到的兴趣点的个数;表示将被边界点nc查询的路段集合;
终止条件B为:某一个边界点队列的查询范围大于QQS中每一个队列的查询边界;
查询队列满足上述的两个终止条件之一即可终止该队列的查询;
步骤203-2:判断是否为首次运行区域外部路段扩展查询,若是,则从边界点队列集合QQS中随机选出一个查询队列并转入步骤203-3;
若非首次进行区域外部查询,则从边界点队列集合QQS中选取查询距离最短的那个查询队列,并将选出的距离最短的查询队列转入步骤203-3;
步骤203-3:将R中的兴趣点个数mf提取出;比较兴趣点个数mf与用户请求兴趣点的个数XQ,若mf≥XQ时,更新中的每一个查询队列中的查询边界,即得到更新后的边界点队列集合转入步骤203-4;若mf<XQ时,直接转入步骤203-4;为第1个边界点n1的查询队列,为第2个边界点n2的查询队列,为边界点nc的查询队列;
对查询边界的更新采用了与mf相匹配的原则,若mf=8且XQ=5时,对中的每一个查询队列中的查询边界进行更新,更新采用了距离边界点自身的第5个最近兴趣点的距离长度;更新后的转换为
步骤203-4:判断查询队列是否达到终止条件,若达到终止条件,则终止查询队列的查询,转入203-1;若未达到终止条件则转入步骤203-5;
步骤203-5:判断查询队列中的的值是否发生变化,若未发生变化则进入步骤203-6;若发生了变化则进入步骤203-2;
步骤203-6:将查询队列的被查询路段集合中的第一个路段road取出,由于采用了升序排列,排在第一个的路段为距离边界点nc的最短路段;road为被查询路段集合中的第一个路段;
步骤203-7:判断路段road是否在已查询路段集合SS中,若在已查询路段集合SS中,则进行步骤203-8;若不在已查询路段集合SS中,则转入步骤203-10;
步骤203-8:如果路段road包含了在兴趣结果集R中的兴趣点则根据边边距离集合NN对兴趣结果集R中的兴趣点到每个边界点的距离进行重新计算;若小于更新前的距离则将赋值给兴趣结果集R中兴趣点所对应的距离值,转入步骤203-9;
如果路段road中没有兴趣点,直接转入步骤203-9;
步骤203-9:将路段road从查询队列中的被查询路段集合移除,进行剪枝操作,转入步骤203-5;
步骤203-10:(A)在路段road上进行兴趣点的查询,如果发现了新的兴趣点则加入到兴趣结果集R中并进行兴趣更新,并以加1的方式更新中的然后从被查询路段集合中移出该路段road,则将与路段road相连的路段road相连添加到查询队列中;同时将路段road加入到已查询路段集合SS={road}中;然后更新查询队列所述更新的原则为:将的值更新为边界点nc到达中的第一条路段的距离;转入步骤203-1进行下一次循环;road相连为与第一个被查road相连的路段;
(B)在路段road上进行兴趣点的查询,如果在路段road上没有发现兴趣点,则从被查询路段集合中移出该路段road,并将与路段road相连的路段road相连添加到查询队列的被查询路段集合中;同时将路段road加入到已查询路段集合SS={road}中;然后更新查询队列所述更新的原则为:将的值更新为边界点nc到达被查询路段集合中的第一条路段的距离;转入步骤203-1进行下一次循环;
所以兴趣更新的原则为:首先将兴趣结果集R中兴趣个数加1,即mf+1;然后,则根据边边距离集合NN对兴趣结果集R中的兴趣点到每个边界点的距离进行计算;并将赋值给兴趣结果集R中兴趣点所对应的距离值,实现兴趣更新。
5.根据权利要求1所述的面向城市路网的位置服务中支持区域的k最近邻查询方法,其特征在于:面向城市路网的位置服务中支持区域的k最近邻查询方法采用Java语言编程实现。
CN201210470845.8A 2012-11-20 2012-11-20 一种面向城市路网的位置服务中支持区域的k最近邻查询方法 Expired - Fee Related CN103020130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210470845.8A CN103020130B (zh) 2012-11-20 2012-11-20 一种面向城市路网的位置服务中支持区域的k最近邻查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210470845.8A CN103020130B (zh) 2012-11-20 2012-11-20 一种面向城市路网的位置服务中支持区域的k最近邻查询方法

Publications (2)

Publication Number Publication Date
CN103020130A CN103020130A (zh) 2013-04-03
CN103020130B true CN103020130B (zh) 2016-11-09

Family

ID=47968734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210470845.8A Expired - Fee Related CN103020130B (zh) 2012-11-20 2012-11-20 一种面向城市路网的位置服务中支持区域的k最近邻查询方法

Country Status (1)

Country Link
CN (1) CN103020130B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559213B (zh) * 2013-10-10 2016-08-17 河南大学 一种公路网高效空间最近邻查询方法
CN103544291B (zh) * 2013-10-29 2016-05-18 东北林业大学 道路网络中基于RRN-Tree的移动对象CKNN查询方法
CN103995859B (zh) * 2014-05-15 2017-07-21 北京航空航天大学 一种应用于lbsn网络的基于地理标签的热点区域事件探测系统
CN104408117B (zh) * 2014-11-26 2017-08-15 浙江大学 基于路网连续聚合最近邻查询的最佳消费者实时查找方法
CN105554743A (zh) * 2015-12-15 2016-05-04 南京信息工程大学 一种避免重叠圆形攻击的移动用户位置隐私的保护方法
CN106507312B (zh) * 2016-12-30 2019-07-16 华南理工大学 一种基于路网环境下个性化位置隐私保护方法
CN107172095B (zh) * 2017-07-05 2020-04-28 重庆邮电大学 一种基于经纬网格的路网环境下用户位置隐私保护方法
CN115683142A (zh) * 2022-10-25 2023-02-03 天津经纬恒润科技有限公司 一种感兴趣区域确定方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101226687A (zh) * 2008-01-31 2008-07-23 浙江工业大学 一种城市交通中的典型行驶路线分析方法
CN101788999A (zh) * 2009-12-30 2010-07-28 安徽大学 一种网络图中最短路径的二分查找追踪方法
CN102156756A (zh) * 2011-05-16 2011-08-17 复旦大学 一种基于图嵌入的在道路网络中查找最优路径的方法
CN102542818A (zh) * 2012-01-13 2012-07-04 吉林大学 一种基于有机计算的区域边界交通信号协调控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101226687A (zh) * 2008-01-31 2008-07-23 浙江工业大学 一种城市交通中的典型行驶路线分析方法
CN101788999A (zh) * 2009-12-30 2010-07-28 安徽大学 一种网络图中最短路径的二分查找追踪方法
CN102156756A (zh) * 2011-05-16 2011-08-17 复旦大学 一种基于图嵌入的在道路网络中查找最优路径的方法
CN102542818A (zh) * 2012-01-13 2012-07-04 吉林大学 一种基于有机计算的区域边界交通信号协调控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于复杂网络的城市路网结构分析方法;张卫华等;《交通运输工程学报》;20121031;第12卷(第5期);64-70 *
基于最短路径优化问题佛洛依德算法系统的;岳秋菊等;《甘肃高师学报》;20101231;第15卷(第5期);41-43 *

Also Published As

Publication number Publication date
CN103020130A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN103020130B (zh) 一种面向城市路网的位置服务中支持区域的k最近邻查询方法
CN103884345B (zh) 兴趣点信息采集方法、显示方法、装置及系统
CN103714311B (zh) 基于定位二维码的城市导航系统构建方法以及导航系统
CN104063466B (zh) 虚拟‑现实一体化的三维显示方法及系统
Li et al. T-DesP: Destination prediction based on big trajectory data
CN106844622A (zh) 一种全空间信息表达方法及全空间信息系统
CN104199891B (zh) 用于热力图的数据处理方法及装置
CN107204988A (zh) 一种基于p2p结构下的位置隐私保护方法
CN101900565A (zh) 路径确定方法和装置
CN103995837A (zh) 一种基于群体足迹的个性化旅游路线规划方法
CN110972073B (zh) 一种基于手机大数据及步行可达性的生活圈划定方法
CN102175252B (zh) 分布式多级道路网的动态融合与联合路径规划方法
CN103826299A (zh) 基于无线信号感知的室内增强现实实现方法
CN107659596B (zh) 一种动态导航的方法及装置、终端
CN109540165A (zh) 一种启发式搜索的高速路网约束寻路算法
CN103023997A (zh) 基于网格缓存技术的海量地理信息名址转换方法及其装置
CN112328877B (zh) 时间依赖路网上多用户的skyline查询的方法
CN107169080A (zh) 一种基于gis和空间数据库相结合的地理空间分析系统
Ohara et al. Maximizing network performance based on group centrality by creating most effective k-links
CN104750929B (zh) 结合网络点权的轨道交通服务效能的抗毁性测度方法
CN106714107A (zh) 一种基于不规则拓扑无线传感器网络的节点定位方法
CN106326492B (zh) 空间矢量数据生成方法及装置
CN106254486A (zh) 一种基于位置推荐的光无线混合虚拟网络嵌入方法及系统
CN105825338A (zh) 一种社会调查数据的空间抽样方法
Jain et al. Engineering location based pathfinding on Indian road networks over low end mobile phones

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161109

Termination date: 20181120