Next Article in Journal / Special Issue
Development of a Safety Index to Identify Differences in Safety Performance by Postal Delivery Motorcyclists Based either in Different Regional Post Offices or within the Same Regional Office
Previous Article in Journal
Road2Vec: Measuring Traffic Interactions in Urban Road System from Massive Travel Routes
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

The SSP-Tree: A Method for Distributed Processing of Range Monitoring Queries in Road Networks

College of Information and Communication Engineering, Sungkyunkwan University, Suwon 440-746, Korea
*
Author to whom correspondence should be addressed.
ISPRS Int. J. Geo-Inf. 2017, 6(11), 322; https://doi.org/10.3390/ijgi6110322
Submission received: 11 August 2017 / Revised: 12 October 2017 / Accepted: 24 October 2017 / Published: 26 October 2017

Abstract

:
This paper addresses the problem of processing range monitoring queries, each of which continuously retrieves moving objects that are currently located within a given query range. In particular, this paper focuses on processing range monitoring queries in the road network, where movements of the objects are constrained by a predefined set of paths. One of the most important challenges of processing range monitoring queries is how to minimize the wireless communication cost and the server computation cost, both of which are heavily dependent on the amount of location-update stream generated by moving objects. The traditional centralized methods for range monitoring queries assume that moving objects periodically send location-updates to the server. However, when the number of moving objects becomes increasingly large, such an assumption may no longer be acceptable because the amount of location-update stream becomes enormous. Recently, some distributed methods have been proposed, where moving objects utilize their available computational capabilities for sending location-updates to the server only when necessary. Unfortunately, the existing distributed methods only deal with the objects moving in Euclidean space, and thus they cannot be extended to processing range monitoring queries over the objects moving along the road network. In this paper, we propose the distributed method for processing range monitoring queries in the road network. To utilize the computational capabilities of moving objects, we introduce the concept of vicinity region. A vicinity region, assigned to each moving object o, makes o monitor whether or not it should be included in the results of nearby queries. The proposed method includes (i) a new spatial index structure, called the Segment-based Space Partitioning tree (SSP-tree) whose role is to efficiently search the appropriate vicinity regions for moving objects based on their heterogeneous computational capabilities and (ii) the details of the communication strategy between the server and moving objects, which significantly reduce the wireless communication cost as well as the server computation cost. Through simulations, we verify the effectiveness for processing range monitoring queries over a large number of moving objects (up to 100,000) in the road network (modeled as an undirected graph).

1. Introduction

The proliferation of handheld computing devices equipped with positioning systems has led to the rapid growth of Location-Based Services (LBSs) [1]. In this paper, we study the problem of processing range monitoring queries. A range monitoring query q = ( q . p , q . d ) , issued over a set of moving objects O, (i) retrieves a subset of moving objects O ´ (⊆O) that are located within a query distance q . d from a query point q . p ; and (ii) continuously updates O ´ as the moving objects change their location. Range monitoring queries often play an important role for supporting LBSs. For example, let us consider the following scenarios. A gas station owner (i.e., client) wants to send promotional coupons to all cars (i.e., moving objects) currently located near her gas station; a child safety service provider (i.e., client) wants to monitor the potential dangerous areas to alert parents when their children (i.e., moving objects) enter these areas; a traffic management department wants to monitor the traffic conditions of the main highways in a city. In such scenarios, the functionality of monitoring moving objects that are currently located within a region of interest is highly required.
A large number of methods for processing range monitoring queries were proposed [2,3,4,5,6,7,8,9,10,11,12,13,14], which can be broadly classified into two categories according to the mobility of query points; one deals with static query points (e.g., facilities such as the gas station mentioned above) [2,3,4,5,6,7], whereas the other deals with moving query points (e.g., free taxis looking for the nearby passengers) [8,9,10,11,12,13,14]. Our proposed method belongs to the former category. Most existing methods for processing range monitoring queries are highly centralized in the sense that moving objects periodically send location-updates to the server, and that the server carries out all the computations for processing range monitoring queries [1]. Therefore, their focus is developing algorithms for efficiently process the queries at the server side. However, when the number of moving objects becomes very large, they may suffer from a severe communication bottleneck as well as overwhelming server workload due to a huge amount of location-update stream generated by the moving objects.
One of the key challenges of processing range monitoring queries is how to minimize the wireless communication cost and the server computation cost, both of which heavily depend on the amount of location-update stream. As the amount of location-update stream is increased, the wireless communication cost and the server computation cost are also increased accordingly. Recently, some distributed methods, which aim to reduce the amount of location-update stream by utilizing the computational capabilities of moving objects, have been proposed [2,3]. In the distributed methods, the server assigns each moving object o several queries, and o locally monitors its movement against these queries. Only when o affects the current result of any of the assigned queries, does it send a location-update to the server to let the server update the result of the corresponding query. As such, in the distributed methods, moving objects no longer need to periodically send location-updates to the server, and thus the amount of location-update stream can be reduced. The additional benefit of the distributed methods is that the moving objects can save energy consumption by reducing the number of wireless message transmissions (i.e., the number of location-updates sent to the server). Please note that a wireless message transmission is an energy expensive operation.
Unfortunately, the existing distributed methods only deal with the objects moving freely in Euclidean space. In most real-life scenarios of LBSs, the objects are allowed to move only on a pre-defined set of paths specified by the underlying road network. In Euclidean space, the distance between a moving object o and a query point q . p is defined as the length of the straight-line connecting them, whereas in the road network, the distance between o and q . p is defined as the total length of the shortest path connecting them. Therefore, the existing distributed methods cannot support range monitoring queries in the road network. For example, let us consider a range monitoring query q = ( q . p , q . d ) , where q . p is shown in Figure 1 and q . d = 10 . As shown in Figure 1a, if q is issued over a set of moving object O = { o 1 , o 2 , o 3 , o 4 , o 5 , o 6 } in Euclidean space, its current result is { o 3 , o 4 , o 5 , o 6 } , where the red circle in the figure represents the query range of q. On the other hand, as shown in Figure 1b, if q is issued over O in the road network, its current result is { o 3 , o 6 } , where a set of red line segments in the figure represents the query range of q. (Note: Each number in brackets in Figure 1b indicates the distance between o i ( 1 i 6 ) O and q . p in the road network.) We refer to each line segment that belongs to the query range in the road network as the query segment.
In this paper, we propose the distributed method for processing range monitoring queries in the road network. To utilize the computational capabilities of moving objects, we introduce the concept of vicinity region. Given a moving object o, o’s vicinity region, denoted by V R ( o ) , is a rectangular region, which contains (i) the point of o’s current location and (ii) a number of query segments. By letting the server assign o (i) V R ( o ) and (ii) query segments inside V R ( o ) , o can monitor by itself whether it affects the results of nearby queries while it is moving. The moving object o sends a location-update to the server whenever (i) it leaves V R ( o ) or (ii) it affects the result of some nearby query q. In the former case, the server assigns o a new vicinity region together with new query segments, while in the latter case, the server updates the result of q accordingly.
One critical problem is how to determine the suitable size of a vicinity region V R ( o ) for each moving object o. If V R ( o ) is too small, o needs to frequently send a location-update to the server for receiving a new vicinity region. On the other hand, if V R ( o ) is too large, o needs to monitor a large number of queries, which imposes a computationally intensive burden on o. In general, a handheld computing device carried by o executes multiple applications, and thus if a single LBS application occupies substantial computational resources, the service quality of the other applications may deteriorate drastically. With this problem in mind, we propose a new spatial index structure, called the Segment-based Space Partitioning tree (SSP-tree). The role of the SSP-tree to efficiently search the appropriate vicinity regions for moving objects based on their heterogeneous computational capabilities. We also describe the details of the communication strategy between the server and moving objects for cooperative processing of range monitoring queries in the road network.
In summary, we propose (i) the concept of vicinity region; (ii) the SSP-tree for vicinity region search; and (iii) the vicinity region based communication strategy between the server and moving objects for distributed processing of static range monitoring queries. Through simulations, we verify the effectiveness of the proposed method for processing static range monitoring queries in terms of the wireless communication cost and the server computation cost.

2. Problem Statement and System Overview

2.1. Background and Problem Statement

In this paper, we address the problem of processing range monitoring queries in the road network. The road network is modeled as an undirected graph G = ( V , E ) , where V = { v 1 , v 2 , v | V | } is a set of vertices and E ( V × V ) = { v i v j | 1 i | E | , 1 j | E | , i j } is a set of edges. A vertex v V corresponds to a road intersection or dead-end. On the other hand, an edge v i v j E corresponds to a road segment, which connects two vertices v i and v j . For convenience of notation, we sometimes indicate an edge v i v j as e. We can assume that each road segment of the road network is a straight line because a curved road segment can be transformed into a set of straight lines by adding extra vertices and edges to G. Therefore, the length of an edge v i v j can be the Euclidean distance between its two endpoints v i and v j . Hereafter, we use d i s t E ( · , · ) to denote the Euclidean distance between any two points (including the vertices) in the road network G.
Definition 1.
Given two vertices v a and v b in the road network G = ( V , E ) , where v a v b E , a path from v a to v b , denoted by P ( v a , v b ) , is a sequence of vertices ( v p 1 , v p 2 , v p k ) such that v p 1 = v a , v p k = v b , and for each consecutive pair of vertices ( v p i , v p i + 1 ) for all 1 i < k , the condition: v p i v p i + 1 E holds. Then, the path length of P ( v a , v b ) is calculated as:
L ( P ( v a , v b ) ) = i = 1 k 1 d i s t E ( v p i , v p i + 1 ) ,
where v p 1 = v a and v p k = v b .
Definition 2.
Given two vertices v a and v b in the road network G = ( V , E ) , where v a v b E , there can exist more than one path from v a to v b . Then, the shortest path from v a to v b , denoted by S P ( v a , v b ) , is defined as:
S P ( v a , v b ) = arg min P ( v a , v b ) P s e t ( v a , v b ) L ( P ( v a , v b ) ) ,
where P s e t ( v a , v b ) is the set of all the paths from v a to v b . The path length of S P ( v a , v b ) , i.e., L ( S P ( v a , v b ) ) , is called the shortest path length.
Consider an example of the road network G in Figure 2a, which serves as a running example in the rest of this paper. In Figure 2a, G consists of 10 vertices and 13 edges. (Note: The vertices and edges outside of the workspace are omitted.) Each number near to each edge in the figure indicates its length (i.e., the Euclidean distance between its two endpoints). From the figure, it can be easily seen that S P ( v 1 , v 9 ) = ( v 1 , v 4 , v 7 , v 9 ) and L ( S P ( v 1 , v 9 ) ) = 29 .
Let O = { o 1 , o 2 , , o | O | } and Q = { q 1 , q 2 , , q | Q | } be a set of moving objects and a set of range monitoring queries, respectively. Each object o O is constrained to move only along the edges in the road network G, and thus the point of o’s location, denoted by o . p , at a particular snapshot in time always lies on an edge in G. Each query q Q is represented by a tuple ( q . p , q . d ) , where q . p is a query point lying on an edge in G and q . d is a query distance.
Definition 3.
Given two points p a and p b , where p a lies on an edge v i 1 v j 1 and p b lies on an edge v i 2 v j 2 , the distance between p a and p b in the road network G, which is called the network distance (between p a and p b ) and denoted by d i s t N ( p a , p b ) , is defined as:
d i s t N ( p a , p b ) = d i s t E ( p a , p b ) i f v i 1 = v i 2 a n d v j 1 = v j 2 ( i . e . , p a and p b lie on the same edge ) ; min x { i 1 , j 1 } , y { i 2 , j 2 } d i s t E ( p a , v x ) + L ( S P ( v x , v y ) ) + d i s t E ( v y , p b ) otherwise .
Given the road network G in Figure 2a, Figure 2b shows the network distance between a query point q . p and several points on G (e.g., vertices and points of moving objects’ location). For example, d i s t N ( q . p , v 5 ) = d i s t E ( q . p , v 5 ) and d i s t N ( q . p , o 1 . p ) = d i s t E ( q . p , o 1 . p ) because q . p , v 5 , and o 1 . p lie on the same edge v 5 v 6 . On the other hand, d i s t N ( q . p , v 3 ) = d i s t E ( q . p , v 6 ) + L ( S P ( v 6 , v 3 ) ) + d i s t E ( v 3 , v 3 ) and d i s t N ( q . p , o 3 . p ) = d i s t E ( q . p , v 6 ) + L ( S P ( v 6 , v 8 ) ) + d i s t E ( v 8 , o 3 . p ) . In Figure 2b, each number in brackets indicates the network distance between q . p and each point. (Note: The network distance between q . p and some vertices are omitted for brevity.)
Definition 4.
A range monitoring query q = ( q . p , q . d ) , issued over a set of moving objects O, in the road network G, continually retrieves a subset O ´ ( O ) of moving objects for which the condition: o O ´ , d i s t N ( q . p , o . p ) q . d holds.
Definition 5.
Given a query q = ( q . p , q . d ) , the query range of q in the road network G, denoted by Q R ( q ) , is a set of all points on the edges (in G) reachable from q . p within q . d . Formally, Q R ( q ) = { p | d i s t N ( q . p , p ) q . d and p is a point in G } .
From Definitions 4 and 5, we can immediately know that given a query q = ( q . p , q . d ) and a moving object o ( O ) in the road network G, if and only if the point of o’s current location is inside the query range of q, can o be the current result of q (i.e., o . p Q R ( q ) d i s t N ( q . p , o . p ) q . d ). In the road network G, the query range Q R ( q ) of a query q consists of a set of line segments.
Definition 6.
Given an edge v i v j in the road network G, a line segment, denoted by s [ p a , p b ] , where p a and p b are points on v i v j , is a set of all points on v i v j between p a and p b , i.e., the portion of v i v j between p a and p b .
For example, in Figure 2b, the query range consists of all red line segments (i.e., s [ v 5 , v 6 ] , s [ v 6 , p 1 ] , and s [ v 6 , p 2 ] ), assuming q . d = 15 . Please note that, by definition, an edge v i v j in G = ( V , E ) is also considered to be a line segment formed by its two endpoints v i and v j (i.e., v i v j = s [ v i , v j ] ). In this paper, we refer to each line segment that belongs to the query range Q R ( q ) of a query q as the query segment of q, which we denote by q s [ p a , p b ] or q s for short. Therefore, given the query range Q R ( q ) of a query q, each query segment q s [ p a , p b ] Q R ( q ) satisfies the condition: p q s [ p a , p b ] , p Q R ( q ) .
The primary goal of our work is to reduce the amount of location-update stream (generated by moving objects) while maintaining the correct results of range monitoring queries in the road network. To this end, we use the concept of vicinity region so that moving objects send location-updates to the server only when necessary. Given a moving object o, o’s vicinity region V R ( o ) is a rectangular region, which contains (i) the point of o’s current location and (ii) some query segments. By assigning each moving object o (i) V R ( o ) and (ii) query segments inside V R ( o ) , o can locally monitor whether it may affect the results of nearby queries based on the following two lemmas.
Lemma 1.
Given a query q = ( q . p , q . d ) , a moving object o O , and one of the query segments q s of q in the road network G, let o . p ´ and o . p be the point of o’s last known location at time t ´ and the point of o’s current location at time t , respectively ( t ´ < t ). Suppose that o . p ´ q s and o . p q s , i.e., o enters q s from outside. Then, there exists a case such that o affects the current result of q.
Proof. 
To prove this lemma, it suffices to show that such a case exists. Without loss of generality, let us assume that o . p ´ Q R ( q ) , and thus d i s t N ( q . p , o . p ´ ) > q . d , meaning that o is not a result object at the last known time t ´ . From Definitions 4, 5, 6, and the description of the query segment, we know that o . p Q R ( q ) , meaning that o is a result object at the current time t. This immediately implies that o becomes a new result object, and therefore o affects the current result of q. ☐
Lemma 2.
Given the same setting and notation as Lemma 1, suppose that o . p ´ q s and o . p q s , i.e., o leaves q s . Then, there also exists a case such that o affects the current result of q.
Proof. 
This lemma can be proved similarly as Lemma 1, and thus we omit the proof. ☐
Only when each moving object o (i) leaves V R ( o ) or (ii) enters or leaves any of the assigned query segments, does it send a location-update to the server in order to (i) receive a new vicinity region together with new query segments or (ii) let the server update the result of a nearby query q if necessary. In this paper, we focus on how to efficiently search the appropriate vicinity regions for moving objects, and propose a new spatial index structure, namely the SSP-tree. We also present the details of the vicinity region-based communication strategy between the server and moving objects for processing range monitoring queries in the road network. To conclude Section 2.1, we summarize the frequently used notations in Table 1.

2.2. System Overview

Figure 3 shows an overview of the system model. Similarly to the system model presented in the previous work [2,3,4,5,6,7], the system model we consider consists of three major components: moving objects, clients, and the central server.
  • Moving objects: Each moving object o, which is identified by its unique identifier o i d , is capable of sensing the point of its current location o . p and has some available computational capability o . c a p . We assume (i) that each moving object o has a heterogeneous capability o . c a p , which is measured by the maximum number of query segments it can process, and (ii) that o . c a p θ , where θ is a system parameter indicating the minimum number of query segments o should process; thus, a moving object with a more powerful capability can be assigned a larger vicinity region that contains a more number of query segments. There are two types of location-update messages sent from the moving objects to the server: RequestVR and UpdateResult. The former is for the purpose of receiving a new vicinity region, whereas the latter is to let the server update the result of a query (if necessary). For example, assuming the moving object o 1 in Figure 3 is assigned the vicinity region V R ( o 1 ) together with query segments q s [ v 6 , p 1 ] , q s [ v 6 , p 2 ] , and q s [ v 6 , p 3 ] , it sends the RequestVR message to the server because it leaves V R ( o 1 ) . On the other hand, assuming the moving object o 2 in Figure 3 is assigned the vicinity region V R ( o 2 ) together with query segments q s [ v 1 , v 4 ] , q s [ v 2 , v 5 ] , and q s [ v 4 , v 5 ] , it sends the UpdateResult message to the server because it leaves q s [ v 1 , v 4 ] .
  • Clients: Each client is able to issue multiple range monitoring queries over the moving objects, and continually receives the up-to-date results of these queries from the server via wireless or high-speed wired connections. Each query q, issued by a client, is identified by its unique identifier q i d , and its query point q . p is assumed to be static; thus, the movement of q . p can be treated as a deletion of the old query followed by an insertion of a new query.
  • Central server: The server acts as an intermediary between moving objects and clients, i.e., moving objects and clients do not communicate directly, but indirectly through the server. In addition to the SSP-tree, the server maintains the following basic memory-resident data structures, which are commonly used in the existing methods for the road network [13,14].
    -
    Edge Index (EI): EI is the PMR-quadtree built on the edges in the road network G = ( V , E ) . Each leaf node of EI stores the identifiers of the edges it intersects. Given a query q, EI is used to identify the edge e (i.e., v i v j E ), where q . p resides. Specifically, EI is traversed down to the leaf node that contains q . p , and e is identified among the edges stored in this leaf node.
    -
    Edge Table (ET): ET is a table hashed on the identifier of each edge e. ET stores for e: (i) its endpoints (i.e., v i and v j ); (ii) its length (i.e., d i s t N ( v i , v j ) = d i s t E ( v i , v j ) ) and (iii) the sets of edges adjacent to each of its endpoints. ET is used to maintain the connectivity information of the road network G.
    -
    Query Table (QT): QT is a table hashed on the identifier q i d of each query q. QT stores for q: (i) its query point q . p ; (ii) its query distance q . d ; (iii) a set of its query segments; and (iv) its current result. QT is used to maintain the information of the registered queries.
    As the intermediary between moving objects and clients in the system, the server performs the following three main tasks.
    -
    Query registration: When a new query q is issued (or q is terminated) by a client, the server inserts q into (or deletes q from) QT, updates the SSP-tree (and the additional data structures that will be described in Section 3), and broadcasts messages (e.g., InsertQS, SplitRegion, DeleteQS, and MergeRegion) to all the moving objects to notify them of these changes. Please note that notifying such common information through broadcasting is desirable because the communication overhead is irrelevant to the number of moving objects in a sense that a single message transmission from the server can be received by all the moving objects.
    -
    Region assignment: When a RequestVR message is arrived from the moving object o that leaves its current vicinity region, the server searches a new vicinity region by traversing the SSP-tree, after which it sends an AssignVR message to o for the purpose of assigning this new vicinity region (together with new query segments) to o.
    -
    Query result update: When an UpdateResult message is arrived from a moving object o that may affect the result of a query q, the server checks whether the current result of q is affected by o. If so, the server updates the result of q. For example, in response to the UpdateResult message sent by the moving object o 2 in Figure 3, the server updates the result of q 2 (i.e., the server removes o 2 from the result of q 2 ).

3. The Proposed Method

As mentioned in the previous section, we focus on the issue of how to efficiently search the appropriate vicinity regions for moving objects. In this paper, similarly to the existing distributed methods in Euclidean space, we choose to partition the workspace into many disjoint subspaces for the search process of the vicinity regions. Please note that the space partitioning approaches used in the existing distributed methods cannot be applied in the road network because they assume that the query range (of a query) is even a rectangle instead of a circle [2,3].
As shown in Figure 4a, if the query ranges Q R ( q 1 ) and Q R ( q 2 ) of the queries q 1 and q 2 , respectively, in the road network are approximated by the rectangles, false positives may be generated in the current results of q 1 and q 2 . In the LBS applications, false positives are more harmful than false negatives because the former can lead to the wrong query results. For example, let us assume that the moving object o 1 in Figure 4a is assigned (i) the entire workspace as its vicinity region V R ( o 1 ) and (ii) two approximated rectangles of query ranges Q R ( q 1 ) and Q R ( q 2 ) . Then, when o 1 moves as shown in the figure, o 1 does not send the UpdateResult message to the server because it does not leave the approximated rectangle of Q R ( q 2 ) . As a result, the server does not know the point of o 1 ’s current location o 1 . p , and thus o 1 is wrongly included in the current result of q 2 although o 1 . p Q R ( q 2 ) (i.e., d i s t N ( q 2 . p , o 1 . p ) > q 2 . d ).
Figure 4b shows an example of the space partitioning approach used in this paper, which recursively partitions the workspace into two equal subspaces until the number of query segments inside each subspace is no more than the split threshold θ . (Note: In the figure, θ is assumed to be 4.) In this paper, we assume that a subspace is horizontally or vertically partitioned along its longer dimension. Specifically, given a subspace, if its width is longer than its height, it is partitioned vertically, otherwise, it is partitioned horizontally. With such a space partitioning approach, the server can use a subspace as a vicinity region V R ( o ) of each moving object o. The size of V R ( o ) (i.e., the size of the subspace used as V R ( o ) ) is determined by o’s capability o . c a p ; thus if o . c a p = n , V R ( o ) must contain the point of o’s current location o . p and no more than n query segments. For example, assuming o 2 . c a p of the moving object o 2 in Figure 4b is 3, o 2 is assigned (i) subspace 112 as its vicinity region V R ( o 2 ) and (ii) three query segments q s [ p 2 , v 5 ] , q s [ v 5 , p 4 ] , and q s [ v 5 , p 5 ] .
To efficiently support partitioning the workspace, the SSP-tree is used, which will be presented in detail throughout this section.

3.1. Query Segment Computation

In this subsection, we describe an algorithm ComputeSeg for the query segment computation. When a new query q = ( q . p , q . d ) is issued by a client, ComputeSeg, which takes a query point q . p and a query distance q . d as inputs, computes the query segments of q based on Dijkstra’s algorithm. Before we describe the details of ComputeSeg, we introduce a distance metric, m i n d i s t N ( q . p , v i v j ) , which is defined between a query point q . p and an edge v i v j in the road network G, and serves as the lower bound for filtering the unnecessary edges in the query segment computation.
Definition 7.
Given a query point q . p and an edge v i v j in the road network G, mindist N ( q . p , v i v j ) is defined as:
m i n d i s t N ( q . p , v i v j ) = 0 if q . p v i v j ; min d i s t N ( q . p , v i ) , d i s t N ( q . p , v j ) otherwise .
Lemma 3.
Given a query point q . p and an edge v i v j in the road network G, p v i v j , m i n d i s t N ( q . p , v i v j ) d i s t N ( q . p , p ) , where p denotes a point.
Proof. 
We prove this lemma by contradiction. Let us assume that there exists a point p ´ v i v j such that d i s t N ( q . p , p ´ ) < m i n d i s t N ( q . p , v i v j ) . We distinguish two cases:
  • If q . p v i v j , m i n d i s t N ( q . p , v i v j ) = 0. This immediately contradicts the assumption because d i s t N ( q . p , p ´ ) cannot be less than 0.
  • If q . p v i v j , m i n d i s t N ( q . p , v i v j ) = min d i s t N ( q . p , v i ) , d i s t N ( q . p , v j ) . Let us consider the subcase, where m i n d i s t N ( q . p , v i v j ) = d i s t N ( q . p , v i ) . Then, when we simplify the Equation (3) to obtain: d i s t N ( q . p , p ´ ) = min ( d i s t N ( q . p , v i ) + d i s t E ( v i , p ´ ) , d i s t N ( q . p , v j ) + d i s t E ( v j , p ´ ) ) , d i s t N ( q . p , p ´ ) = d i s t N ( q . p , v i ) + d i s t E ( v i , p ´ ) . This leads to a contradiction to the assumption because d i s t N ( q . p , v i ) d i s t N ( q . p , v i ) + d i s t E ( v i , p ´ ) . The subcase, where m i n d i s t N ( q . p , v i v j ) = d i s t N ( q . p , v j ) , leads to the same contradiction as the former subcase.
Therefore, p ´ cannot exist. ☐
Algorithm 1 is the pseudocode of ComputeSeg, assuming e is the edge that contains q . p (e is identified by using EI). First, ComputeSeg initializes an empty min-heap H to traverse the vertices in the road network G in the ascending order of their network distance from q . p (line 1). Next, ComputeSeg enheaps the endpoints (i.e., vertices) of e into H with keys equal to their network distance from q . p (lines 2–3). Then, ComputeSeg iteratively deheaps a vertex from H.
Algorithm 1 ComputeSeg( q . p , q . d )
Input q . p : query point of q, q . d : query distance of q
Output q s _ s e t : a set of query segments q
1: initialize an empty min-heap H;
2: let e be the edge containing q . p ;
3: enheap the endpoints (vertices) of e into H with keys equal to their network distance from q . p ;
4: repeat
5:  deheap the top entry [ v i , d i s t N ( q . p , v i ) ] from H;
6:  mark v i as visited;
7:  for each adjacent vertex v j of v i do
8:     if v j has not been visited and d i s t N ( q . p , v i ) q . d then
9:      set d i s t N ( q . p , v j ) to d i s t N ( q . p , v i ) + d i s t N ( v i , v j ) ; //  d i s t N ( v i , v j ) = d i s t E ( v i , v j )
10:    enheap v j into H with a key d i s t N ( q . p , v j ) ;
11:   else if v j has been visited then
12:    compute m i n d i s t N ( q . p , v i v j ) ;
13:    if m i n d i s t N ( q . p , v i v j ) q . d then
14:     compute the query segment q s of q;
15:     insert q s into q s _ s e t ;
16: until (H is empty)
17: return q s _ s e t ;
For each deheaped vertex v i , ComputeSeg marks v i as visited and checks each of its adjacent vertices v j whether or not v j has been visited ( v j is identified by using ET). If v j has not been visited, ComputeSeg further checks if d i s t N ( q . p , v i ) q . d . Only if this is the case, is v j enheaped into H with a key d i s t N ( q . p , v i ) + d i s t N ( v i , v j ) (lines 8–10). The rationale is that if (i) v j has not been visited and (ii) d i s t N ( q . p , v i ) > q . d , it is guaranteed that d i s t N ( q . p , v j ) > q . d . This implies that no portion of each edge v j v k formed by v j and each of its adjacent vertices v k (including v i ) can be the query segment of q because m i n d i s t N ( q . p , v j v k ) > q . d . From Lemma 3, we know that the network distance between q . p and every point p v j v k is equal to or greater than m i n d i s t N ( q . p , v j v k ) , and thus that p v j v k , d i s t N ( q . p , p ) > q . d . Therefore, v j need not be enheaped and expanded. On the other hand, if v j has been visited (i.e., v j has been deheaped before), ComputeSeg further checks if m i n d i s t N ( q . p , v i v j ) q . d . If so, ComputeSeg computes the query segment of q (lines 11–15). This process continues until H becomes empty, and finally ComputeSeg returns the query segments of q.

3.2. The Segment-Based Space Partitioning Tree (SSP-Tree)

3.2.1. Description

The SSP-tree is a hierarchical data structure that recursively splits the workspace into two subspaces. It is a binary tree, where each node N represents a subspace of the workspace, and N’s two children represent equal halves of this subspace. Hereafter, we say that a tree node N corresponds to a subspace or vice versa if N represents this subspace, and without ambiguity, we use the symbol ‘N’ to denote both a tree node and its corresponding subspace.
Given a set of query segments on the workspace that corresponds to the root, if the number of these query segments is greater than the split threshold θ (i.e., the minimum number of query segments each moving object should process), the workspace is split into two subspaces, each of which corresponds to a child node N of the root. When a query segment q s partially intersects N, it is also split into two query segments q s N and q s ( q s N ) so that q s N is inside N. When necessary, we refer to each query segment computed by ComputeSeg (e.g., q s that partially intersects N) as the original query segment for distinguishing it from the newly generated query segments (e.g., q s N and q s ( q s N ) ). The process recursively continues until each node has no more than θ query segments inside it. We define the simple intersection relationships between a query segment q s and a node N of the SSP-tree.
Definition 8.
Given a query segment q s [ p a , p b ] and a node N of the SSP-tree, let q s [ p a , p b ] be the interior of q s [ p a , p b ] (i.e., q s [ p a , p b ] = q s [ p a , p b ] { p a , p b } ). Then, there can be three relationships as follows:
  • Inside or contain relationship (see Figure 5a): We say that q s [ p a , p b ] is inside N or N contains q s [ p a , p b ] if q s [ p a , p b ] N = q s [ p a , p b ] .
  • Partially intersect relationship (see Figure 5b): We say that q s [ p a , p b ] partially intersects N or vice versa if ( q s [ p a , p b ] N q s [ p a , p b ] ) ( q s [ p a , p b ] N ) ( { p a , p b } N ) .
  • Fully intersect relationship (see Figure 5c): We say that q s fully intersects N or vice versa if ( q s [ p a , p b ] N q s [ p a , p b ] ) ( q s [ p a , p b ] N ) ( { p a , p b } N = ) .
Now, we describe the structure and properties of the SSP-tree. A leaf node of the SSP-tree stores at most θ tuples of the form ( q s , f l a g ) , where q s is a query segment inside N and f l a g is a single bit that is set (i.e., logical 1) if q s is an original query segment. A non-leaf node stores two entries of the form ( p t r , N ) , where p t r is a pointer to a child node and N is a subspace that corresponds to the child node pointed to by p t r . The SSP-tree satisfies the following properties:
  • A tuple ( q s , f l a g ) is stored in a leaf node N if q s is inside N.
  • A tuple ( q s , f l a g ) can be redundantly stored in two leaf nodes if q s lies along the splitting line S L that separates these two leaf nodes (i.e., if q s S L = q s ).
  • For each entry ( p t r , N ´ ) stored in a non-leaf node N, N ´ represents one of the equal halves of N’s subspace.
  • Each (leaf and non-leaf) node N maintains (i) a variable, called the count variable (denoted by N . C ), which records the total number of query segments inside N, and (ii) a list, called the full list (denoted by N . F L ), which stores the original query segments that fully intersects N.
Assuming θ = 3 , Figure 6 shows an example of the SSP-tree built on two queries q 1 and q 2 in the road network G in Figure 2a, where the original query segments of q 1 and q 2 are { q s [ v 5 , v 6 ] , q s [ v 6 , p 1 ] , q s [ v 6 , p 8 ] } ( = Q R ( q 1 ) ) and { q s [ v 5 , p 2 ] , q s [ v 5 , p 3 ] , q s [ v 5 , p 5 ] } ( = Q R ( q 2 ) ), respectively.
To track each query q and its query segments (including the original query segments and the newly generated query segments), the server maintains the Query Relevance Table (QRT). We say that a query q is relevant to a query segment q s or vice versa if q s belongs to Q R ( q ) (i.e., q s Q R ( q ) ). For example, in Figure 6, the query q 1 is relevant to the query segments q s [ v 5 , p 4 ] , q s [ v 6 , p 1 ] , q s [ v 6 , p 6 ] , q s [ v 6 , p 7 ] , and q s [ p 7 , p 8 ] . On the other hand, the query q 2 is relevant to the query segments q s [ v 5 , p 2 ] , q s [ v 5 , p 3 ] , q s [ v 5 , p 4 ] , and q s [ p 4 , p 5 ] . A query segment q s can have more than one relevant queries. For example, q s [ v 5 , p 4 ] is relevant to both q 1 and q 2 . Each row of QRT is a tuple of the form ( q s , q i d _ l i s t ) indexed by q s , where q s is a distinct query segment and q i d _ l i s t is a list that stores the identifiers of the queries that are relevant to q s .
The server also maintains the Segment Relevance Table (SRT) to identify the relevance between each original query segment q s and the newly generated query segments. Similarly to the above, we say that an original query segment q s is relevant to a newly generated query segment q s ´ or vice versa if q s ´ is split from q s . For example, in Figure 6, the original query segment q s [ v 5 , v 6 ] is relevant to the newly generated query segments q s [ v 5 , p 4 ] and q s [ v 6 , p 6 ] , while the original query segment q s [ v 5 , p 5 ] is relevant to the newly generated query segments q s [ v 5 , p 4 ] and q s [ p 4 , p 5 ] . It is important to note that in contrast to the original query segments that partially intersect a node N of the SSP-tree, the original query segments that fully intersect N are not split but stored in N . F L . For example, the query segment q s [ p 4 , p 6 ] is not generated because q s [ v 5 , v 6 ] fully intersects the tree node N 221 ; instead, q s [ v 5 , v 6 ] is stored in N 211 . F L . A newly generated query segment q s ´ can have more than one relevant original query segments. For example, q s [ v 5 , p 4 ] is relevant to both q s [ v 5 , v 6 ] and q s [ v 5 , p 5 ] . Each row of SRT is a tuple of the form ( q s ´ , q s _ l i s t ) indexed by q s ´ , where q s ´ is a distinct newly generated query segment and q s _ l i s t is a list that stores the original query segments that are relevant to q s ´ .
Given a (leaf or non-leaf) node N of the SSP-tree and a moving object o, N can become a candidate for o’s vicinity region if N contains (i) o . p and (ii) N . C o . c a p . In this connection, the first advantage of maintaining N . F L at each node N is that the server can assign a larger (but still appropriate) vicinity region to each moving object o than not maintaining it. This is because each query segment q s that fully intersects N does not lead to the generation of a new query segment q s N , and thus the value of N . C is not increased. Assuming o is assigned N as its vicinity region, the second advantage is that o can reduce the number of sending unnecessary UpdateResult messages to the server because q s N is not generated and assigned to o. Here, it should be validated that q s N need not be assigned to o. This is accomplished by the following lemma.
Lemma 4.
Given a node N of the SSP-tree, a query q = ( q . p , q . d ) , an object o moving only inside N, and one of the q’s relevant query segments q s [ p a , p b ] that fully intersects N, suppose that o enters or leaves q s [ p a , p b ] . In such a case, o cannot affect the current result of q.
Proof. 
From Definition 8, we know that both endpoints p a and p b of q s [ p a , p b ] are outside N. In addition, from Section 2.1, we know that p q s [ p a , p b ] , d i s t N ( q . p , p ) q . d . If o enters q s [ p a , p b ] , it comes from one of the query segments that is connected with q s [ p a , p b ] at the point p c , where p c q s [ p a , p b ] and p c is inside N, because o is moving only inside N. Let this query segment be q s [ p c , p d ] . Then, q s [ p c , p d ] must also be the relevant query segment of q, i.e., q s [ p c , p d ] Q R ( q ) , because d i s t N ( q . p , p c ) < q . d . Similarly, if o leaves q s [ p a , p b ] , it enters one of the query segments that must also be the relevant query segment of q. Therefore, o cannot affect the current result of q. ☐
For example, assuming the capability o 1 . C a p of the moving object o 1 in Figure 6 is 3, o 1 is assigned the tree node N 211 as its vicinity region together with only the query segment q s [ p 4 , p 5 ] . When o 1 moves as shown in the figure, it sends only the RequestVR message to the server for receiving a new vicinity region. Then, before assigning o 1 a new vicinity region (together with new query segments), the server should additionally check whether o 1 leaves the original query segment q s [ v 5 , v 6 ] by accessing N 211 . F L because, if so, o 1 may affect the current result of the query q 1 . In this example, o 1 does not leave q s [ v 5 , v 6 ] . Please note that if the query segment q s [ p 4 , p 6 ] is generated and assigned to o 1 , o 1 should send two notification messages to the server, one that it has leaved N 211 and the other that it has leaved q s [ p 4 , p 6 ] .

3.2.2. Vicinity Region Search

When a new moving object o is registered at the server, an algorithm Search is performed on the SSP-tree to find out o’s vicinity region V R ( o ) . Algorithm 2 is the pseudocode of Search. Given a SSP-tree node N (initially the root) and a moving object o with the point of its current location o . p and its capability o . c a p , Search recursively accesses only the nodes that contain o . p until reaching the node N such that N . C o . c a p (lines 1–3). Now, N becomes o’s vicinity region. Then, Search invokes SearchSeg, which is a recursive depth-first search function that takes N as an input (line 6). SearchSeg retrieves the tuples stored in each N’s descendent leaf node N ´ and returns all the distinct query segments.
Algorithm 2 Search(N, o)
Input N: a SSP-tree node initially set to the root, o: a moving object
Output V R ( o ) : o’s vicinity region, q s _ s e t : a set of distinct query segments
1: if N . C > o . c a p then
2:  find the entry ( p t r , N ´ ) stored in N such that N ´ contains o . p ;
3:  Search( N ´ , o);  //  Recursion
4: else  // if N . C o . c a p
5:  set V R ( o ) to N;
6:  set q s _ s e t to q s _ s e t   SearchSeg(N);
7:  return V R ( o ) and q s _ s e t ;
Function SearchSeg ( N )
Input N: a SSP-tree node that becomes V R ( o )
Output R e s u l t : a set of distinct query segments
1: if N is a non-leaf node then
2:  for each entry ( p t r , N ´ ) stored in N do
3:   SearchSeg ( N ´ )   //  Recursion
4: else   //  if N is a leaf node
5:  retrieve tuples stored in N and insert the query segments into R e s u l t ;
6: return R e s u l t ;
After Algorithm 2 terminates, the server sends an AssignVR message to o for assigning N as V R ( o ) together with the retrieved query segments. For example, let us assume that the capability o 2 . c a p of the moving object o 2 in Figure 6 is 4. When o 2 is registered at the server, starting from the root, Search recursively traverses the SSP-tree until it reaches the node N 21 . Then, Search invokes SearchSeg to find out all the distinct query segments stored in N 21 ’s descendent leaf nodes (i.e., N 211 and N 212 ). After Search terminates, the server sends an AssignVR message to o 2 for assigning N 21 as V R ( o 2 ) together with the query segments q s [ v 6 , p 1 ] , q s [ v 6 , p 6 ] , q s [ v 6 , p 7 ] , and q s [ p 4 , p 5 ] .

3.2.3. SSP-Tree Manipulations

The SSP-tree can be manipulated with a set of algorithms, which specify how a query segment is inserted into and deleted from the SSP-tree, and how overflow or underflow of a SSP-tree node is managed.
Algorithm 3 Insert(N, q s )
Input N: a SSP-tree node initially set to the root, q s : a query segment of a query q
1: update QT and QRT;
2: if N is a non-leaf node then
3:    if q s fully intersects N then
4:     insert q s into N . F L ;
5:    for each entry ( p t r , N ´ ) stored in N do
6:     if q s intersects N ´ then  //  if q s is inside, partially intersects, or fully intersects N ´
7:      Insert( N ´ , q s );
8: else  // if N is a leaf node
9:    if q s fully intersects N then
10:   insert q s into N . F L ;
11:  else  // if q s is inside or partially intersects N
12:   if the tuple ( q s N , f l a g ) is not already stored in N then
13:    insert a tuple ( q s N , f l a g ) into N and increases N . C by 1;
14:    if q s partially intersects N then
15:     update QT, QRT, and SRT;
16:    repeat
17:     set N ¨ to N’s parent;
18:     increase N ¨ . C by 1;
19:    until ( N ¨ is the root)
20:    if N . C > θ then
21:     SplitNode ( N ) ;
Algorithm 3 is the pseudocode of the insert algorithm Insert. Given an original query segment q s of a query q, Insert first updates QT and QRT (line 1). Then, Insert recursively follows the paths of the SSP-tree, each of which consists of non-leaf and leaf nodes with which q s intersects. At a non-leaf node N in each path, Insert checks if q s fully intersects N. If so, Insert inserts q s into N . F L (lines 3–4). When reaching a leaf node N in the path, Insert checks if q s fully intersects N. If this is the case, Insert inserts q s into N . F L (lines 9–10). On the other hand, if q s is inside or partially intersects N, Insert inserts a new tuple ( q s N , f l a g ) into N and increases N . C by 1 only when it is not already stored in N (lines 12–13). Here, if q s is inside N, i.e., q s N = q s , f l a g is set. In case that q s partially intersects N, Insert additionally updates QT, QRT, and SRT (lines 14–15). Finally, Insert increases N ¨ . C of each node N ¨ in the path from N’s parent to the root by 1 (lines 16–19). When N overflows (i.e., N . C > θ ), Insert invokes the split algorithm SplitNode (lines 20–21).
Algorithm 4 is the pseudocode of SplitNode. Given an overflowed leaf node N, SplitNode creates (i) two new empty leaf nodes N l e f t and N r i g h t , and (ii) a new non-leaf node N n e w that stores entries ( p t r , N l e f t ) and ( p t r , N r i g h t ) , where N l e f t or N r i g h t represents one of the equal halves of N (lines 1–3). Now, N l e f t and N r i g h t become N n e w ’s children. Next, SplitNode inserts all the query segments stored in N . F L (i.e., all the original query segments that fully intersect N) into N l e f t . F L , N r i g h t . F L , and N n e w . F L , after which it finds the entry ( p t r , N ) stored in N’s parent to redirect p t r to point to N n e w (lines 4–5). Now, N’s parent becomes N n e w ’s parent. Then, SplitNode checks for each tuple ( q s , f l a g ) stored in N if q s intersects each of N n e w ’s children N ´ n e w . (Note: For the ease of description, we use N ´ n e w to denote both N l e f t and N r i g h t when necessary.) If so, according to two cases, SplitNode proceeds as follows:
  • If f l a g is set, indicating that q s is the original query segment, SplitNode checks if q s fully intersects N ´ n e w . If so, SplitNode inserts q s into N ´ n e w (lines 10–11). Otherwise, SplitNode inserts a tuple ( q s N ´ n e w , f l a g ) into N ´ n e w and increases N ´ n e w . C by 1 only when ( q s N ´ n e w , f l a g ) is not already stored in N ´ n e w (lines 12–13). In case that q s partially intersects N ´ n e w , SplitNode additionally updates QT, QRT, and SRT (lines 14–15).
  • If f l a g is not set, SplitNode checks for each of q s ’s relevant original query segments q s ´ if q s ´ fully intersects N ´ n e w . If so, SplitNode inserts q s ´ into N ´ n e w . F L (lines 18–19). Otherwise, similarly to the former case, SplitNode inserts a tuple ( q s ´ N ´ n e w , f l a g ) into N ´ n e w and increases N ´ n e w . C by 1 only when ( q s ´ N ´ n e w , f l a g ) is not already stored in N ´ n e w (lines 20–21). In case that q s ´ partially intersects N ´ n e w , SplitNode additionally updates QT, QRT, and SRT (lines 22–23).
Then, SplitNode sets N n e w . C to ( N l e f t . C + N r i g h t . C ) and increases N ¨ . C of each node N ¨ in the path from N n e w ’s parent to the root by ( N n e w . C N . C ) (lines 24–28). Finally, SplitNode discards N (line 29). This split process propagates downward if necessary (lines 30–31).
Algorithm 4 SplitNode(N)
Input N: an overflowed SSP-tree leaf node
1: create two new empty leaf nodes N l e f t and N r i g h t ;
2: create a new empty non-leaf node N n e w ;
3: insert entries ( p t r , N l e f t ) and ( p t r , N r i g h t ) into N n e w ;
4: insert all the query segments stored in N . F L into N l e f t . F L , N r i g h t . F L , and N n e w . F L ;
5: find the entry ( p t r , N ) stored in N’s parent and redirect p t r to point to N n e w ;
6: for each entry ( p t r , N ´ n e w ) stored in N n e w do  //   N ´ n e w : N l e f t or N r i g h t
7:  for each tuple ( q s , f l a g ) stored in N do
8:   if q s intersects N ´ n e w then  //  if q s is inside, partially intersects, or fully intersects N ´ n e w
9:     if f l a g is set then
10:     if q s fully intersects N ´ n e w then
11:      insert q s into N ´ n e w . F L ;
12:     else  //  if q s is inside or partially intersects N ´ n e w
13:      insert a tuple ( q s N ´ n e w , f l a g ) into N ´ n e w and increase N ´ n e w . C by 1 if it is not stored in N ´ n e w ;
14:      if q s partially intersects N ´ n e w then
15:       update QT, QRT, and SRT;
16:   else  //  f l a g is not set
17:     for each q s ’s relevant original query segment q s ´ q s ´ _ l i s t of the tuple ( q s , q s ´ _ l i s t ) in SRT do
18:      if q s ´ fully intersects N ´ n e w then
19:       insert q s ´ into N ´ n e w . F L ;
20:      else  // if q s ´ is inside or partially intersects N ´ n e w
21:       insert a tuple ( q s ´ N ´ n e w , f l a g ) into N ´ n e w and increase N ´ n e w . C by 1 if it is not stored in N ´ n e w ;
22:       if q s ´ partially intersects N ´ n e w then
23:        update QT, QRT, and SRT;
24: set N n e w . C to ( N l e f t . C + N r i g h t . C ) ;
25: repeat
26: set N ¨ to N n e w ’s parent;
27: increase N ¨ . C by ( N n e w . C N . C ) ;
28: until ( N ¨ is the root)
29: discard N;
30: for each entry ( p t r , N ´ n e w ) stored in N n e w do  //   N ´ n e w : N l e f t or N r i g h t
31: SplitNode( N ´ n e w ) if N ´ n e w . C > θ ;
Algorithm 5 is the pseudocode of the delete algorithm Delete. Given an original query segment q s of a query q, Delete first updates QRT (line 1). Then, Delete follows the paths of the SSP-tree, each of which consists of non-leaf and leaf nodes with which q s intersects. At a non-leaf node N in each path, Delete checks if q s fully intersects N. If so, Delete deletes q s from N . F L (lines 3–4). When reaching a leaf node N in this path, Delete checks the intersection relationships between q s and N. Then, according to three cases, Delete proceeds as follows:
  • If q s fully intersects N, Delete q s from N . F L (lines 10–11).
  • If q s is inside N (i.e., q s N = q s ), Delete deletes the tuple ( q s N , f l a g ) from N and decreases N . C by 1 if q is the only relevant query of q s N (lines 12–14).
  • If q s partially intersects N, Delete updates QRT and SRT (line 16). Then, it deletes the tuple ( q s N , f l a g ) from N and decrease N . C by 1 if q s is the only relevant original query segment of q s N (lines 17–18).
If the tuple ( q s N , f l a g ) is deleted from N, Delete decreases N ¨ . C of each node N ¨ in the path from its parent to the root by 1 (lines 20–23). Finally, Delete invokes the merge algorithm MergeNode, which takes N’s parent as an input, to condense the tree if possible (line 24).
Algorithm 5 Delete(N, q s )
Input N: a SSP-tree node initially set to the root, q s : a query segment of a query q
1: update QRT;
2: if N is a non-leaf node then
3:    if q s fully intersects N then
4:     delete q s from N . F L ;
5:    else  //  if q s is inside or partially intersects N
6:    for each entry ( p t r , N ´ ) stored in N do
7:     if q s intersects N ´ then  //  if q s is inside, partially intersects, or fully intersects N ´
8:      Delete( N ´ , q s );
9: else  //  if N is a leaf node
10:  if q s fully intersects N then
11:   delete q s from N . F L ;
12:  else if q s is inside N then  //  if q s N = q s
13:   if q is the only relevant query of q s N (= q s ) then
14:    delete the tuple ( q s N , f l a g ) from N and decrease N . C by 1;
15:  else  //  if q s partially intersects N
16:   update QRT and SRT;
17:   if q s is the only relevant original query segment of q s N then
18:    delete the tuple ( q s N , f l a g ) from N and decrease N . C by 1;
19:   if the tuple ( q s N , f l a g ) is deleted from N then
20:   repeat
21:    set N ¨ to N’s parent;
22:    decrease N ¨ . C by 1;
23:   until ( N ¨ is the root)
24:   MergeNode(N’s parent);
Algorithm 6 MergeNode(N)
Input N: a non-leaf node of the SSP-tree
1: if N . C θ and both of N’s children are leaf nodes then
2:  create a new empty leaf node N n e w ;
3:  insert all the original query segments stored in N . F L into N n e w . F L ;
4:  set N n e w . C to N . C ;
5:  find the entry ( p t r , N ) stored in N’s parent and redirect p t r to point to N n e w ;
6:  for each entry ( p t r , N ´ ) stored in N do
7:   for each tuple ( q s N ´ , f l a g ) stored in N ´ do
8:    insert ( q s N ´ , f l a g ) into N n e w if it is not stored in N n e w ;
9:  discard N and N’s children;
10:   MergeNode( N n e w ’s parent);
Algorithm 6 is the pseudocode of MergeNode. Given a non-leaf node N, MergeNode first checks if (i) N . C θ and (ii) both of N’s children are leaf nodes. If so, MergeNode creates a new empty leaf node N n e w , inserts all the original query segments stored in N . F L into N n e w . F L , and sets N n e w . C to N . C (lines 2–4). Next, MergeNode finds the entry ( p t r , N ) stored in N’s parent to redirect p t r to point to N n e w (line 5). Now, N’s parent becomes N n e w ’s parent. Then, MergeNode inserts all the distinct tuples stored in each N’s child N ´ into N n e w (lines 6–8). Finally, MergeNode discards N and its children (line 9). This merge process propagates upward until the node that does not satisfy the merge condition is reached (line 10).
Now, we analyze the time costs of the SSP-tree manipulations in Lemma 5. For the simplicity of analysis, we assume (i) that each query segment is not redundantly stored in two leaf nodes; and (ii) that the SSP-tree is perfectly balanced, and thus its depth is log 2 ( | Q S _ s e t | θ ) , where | Q S _ s e t | denotes the total number of query segments stored in the leaf nodes. In addition, the number of original query segments q s ´ _ l i s t of each tuple ( q s , q s ´ _ l i s t ) in SRT is assumed to be almost same.
Lemma 5.
Let t i n s e r t , t s p l i t , t d e l e t e , and t m e r g e be the time costs of insert, split, delete, and merge operations, respectively. Then, t i n s e r t α 1 log 2 ( | Q S _ s e t | θ ) + α 2 log 2 ( | Q S _ s e t | θ ) , t s p l i t 2 · α 3 ( θ + 1 ) · | q s ´ _ l i s t | + α 4 log 2 ( | Q S _ s e t | θ ) , t d e l e t e α 5 log 2 ( | Q S _ s e t | θ ) + α 6 log 2 ( | Q S _ s e t | θ ) , and t m e r g e α 7 θ , where α 1 , α 2 , , α 7 are constants.
Proof. 
Given a new query segment q s , Insert involves finding the leaf node N from the root to store q s and updating the count variables of the non-leaf nodes along the path from N to the root, both of which take time linear to the depth of the SSP-tree, and thus t i n s e r t α 1 log 2 ( | Q S _ s e t | θ ) + α 2 log 2 ( | Q S _ s e t | θ ) . Please note that (i) updating full list N . F L maintained in each node N and (i) updating QT, QRT, and SRT take constant expected time because they are implemented as hash tables. Given an overflowed leaf node N, SplitNode checks θ + 1 tuples against each of two newly generated leaf nodes N ´ n e w . (Note: N ´ n e w is a child of the newly generated non-leaf node N n e w .) In addition, for each tuple ( q s , f l a g ) , if f l a g is not set, SplitNode further checks q s ´ _ l i s t of the tuple ( q s , q s ´ _ l i s t ) in SRT. These take time at most 2 · α 3 ( θ + 1 ) · | q s ´ _ l i s t | . Because SplitNode also involves updating the count variables of the non-leaf nodes along the path from N n e w to the root, t s p l i t 2 · α 3 ( θ + 1 ) · | q s ´ _ l i s t | + log 2 ( | Q S _ s e t | θ ) . To delete an existing query segment q s , Delete finds the leaf node N from the root, deletes q s if necessary, and updates the count variables of the non-leaf nodes along the path from N to the root; therefore, t d e l e t e α 5 log 2 ( | Q S _ s e t | θ ) + α 6 log 2 ( | Q S _ s e t | θ ) . Finally, MergeNode checks each tuple ( q s , f l a g ) stored in two mergeable leaf nodes against a new leaf node, and thus t m e r g e α 7 θ . ☐

3.3. Vicinity Region-based Communications and Query Processing

In this subsection, we describe how each moving object and the server communicate each other to cooperatively process range monitoring queries. The query processing consists of server-side tasks and object-side tasks.

3.3.1. Server-Side Tasks

The server performs three main tasks: query registration, region assignment, and query result update.
  • Query registration: When a new query q is issued by a client, the server inserts q into QT and invokes ComputeSeg (see Algorithm 1) to compute the relevant query segments of q. Then, for each query segment q s generated by ComputeSeg, the server (i) invokes Insert (see Algorithm 3) to insert q s into the SSP-tree and (ii) broadcasts the InsertQS ( q s ) message. In case that a leaf node N ´ of the SSP-tree is split into N l e f t and N r i g h t , the server broadcasts the SplitRegion ( N ´ , N l e f t , N r i g h t ) message. On the other hand, when an existing query q is terminated by a client, for each relevant query segment q s of q, the server (i) invokes Delete (see Algorithm 5) to delete q s from the SSP-tree; (ii) broadcasts the DeleteQS ( q s ) message; and finally (iii) deletes q from QT. In case that two leaf nodes N l e f t and N r i g h t are merged, the server broadcasts the MergeRegion ( N l e f t , N r i g h t , q s _ s e t ( l e f t + r i g h t ) ) message, where q s _ s e t ( l e f t + r i g h t ) is the combined set of query segments inside N l e f t and N r i g h t .
  • Region assignment: When the server receives the RequestVR ( o . p , o . c a p , N o l d ) message from a moving object o, where o . p , o . c a p , and N o l d denote the point of o’s current location, o’s capability, and o’s previous vicinity region, respectively, it first checks if o leaves each original query segment stored in N o l d . F L . If so, the server updates the result of the corresponding query when necessary. Then, the server invokes Search (see Algorithm 2), after which it sends the AssignVR ( N n e w , q s _ s e t ) message to o, where N n e w is o’s new vicinity region and q s _ s e t is a set of query segments inside N n e w .
  • Query Result Update: When the server receives the UpdateResult ( o . p , q s ) message from a moving object o, it visits QRT to find the relevant queries of q s . Then, the server checks each q s ’s relevant query q if d i s t N ( q . p , o . p ) q . d . If so, the server inserts o into the result of q (if it is not already there). On the other hand, if d i s t N ( q . p , o . p ) > q . d , the server removes o from the result of q (if it is there).

3.3.2. Object-Side Tasks

Each moving object o maintains a subspace N as its vicinity region and a set q s _ s e t of query segments inside N. Whenever o moves, it checks (i) if it leaves N and (ii) it enters or leaves each query segment q s q s _ s e t . If o leaves N, it sends the RequestVR ( o . p , o . c a p , N o l d ) message to the server. In response, o receives the AssignVR ( N n e w , q s _ s e t ) message from the server. On the other hand, if o enters or leaves q s , it sends the UpdateResult ( o . p , q s ) message to the server. In addition, o expects the following broadcast messages from the server and processes them as follows:
  • InsertQS ( q s ) : When o listens to the InsertQS ( q s ) message, it first checks if o . p is inside q s . If so, o sends UpdateResult ( o . p , q s ) message to the server to let the server insert o into the results of q s ’s relevant queries. Then, o checks if q s is inside or partially intersects its vicinity region N. If so, o inserts N q s into q s _ s e t . In case that the cardinality | q s _ s e t | of q s _ s e t is greater than o . c a p , i.e., | q s _ s e t | > o . c a p , o sends the RequestVR ( o . p , o . c a p , N o l d ) to the server.
  • SplitRegion ( N ´ , N l e f t , N r i g h t ) : When o listens to the SplitRegion ( N ´ , N l e f t , N r i g h t ) message, it first checks if its vicinity region N equals N ´ . If this is the case, if o . p is inside N l e f t , o sets N l e f t as its new vicinity region N n e w ; otherwise, it sets N r i g h t as N n e w . Then, for each query segment q s ( q s _ s e t ) that intersects N n e w , o replaces it with q s N n e w .
  • DeleteQS ( q s ) : When o listens to the DeleteQS ( q s ) message, it just deletes q s from q s _ s e t if q s is inside its vicinity region N.
  • MergeRegion ( N l e f t , N r i g h t , q s _ s e t ) : When o listens to the MergeRegion ( N l e f t , N r i g h t , q s _ s e t ( l e f t + r i g h t ) ) message, it first checks if its vicinity region N equals N l e f t or N r i g h t . If so, o sets N l e f t N r i g h t as its new vicinity region N n e w and replaces q s _ s e t with q s _ s e t ( l e f t + r i g h t ) .

4. Performance Evaluation

In this section, we evaluate and compare the performance of the proposed distributed method (denoted by DM) with that of the centralized method (denoted by CM) in terms of the communication cost and the server computation cost because existing work for range monitoring queries in the road network mostly adopts CM [1]. CM uses the same basic data structures (i.e., EI, ET, and QT) as DM. The communication cost of CM was measured by the total number of location-update messages transmitted from moving objects, while that of DM was measured by the total number of messages transmitted between the server and moving objects, i.e., the sum of (i) the number of point-to-point messages (RequestVR, UpdateResult, and AssignVR) and (ii) the number of broadcast messages (InsertQS, SplitRegion, DeleteQS, and MergeRegion). On the other hand, the server computation cost of CM and DM was measured by the amount of CPU-time the server takes for query processing. Because we are interested in the advantages of maintaining the full list at each SSP-tree node, we implemented two versions of the SSP-tree; one is the proposed SSP-tree, where each node maintains the full list, and the other is the naïve SSP-tree, where each node does not maintain the full list. The simulations were coded in Java on Intel Xeon E5-2620 6-core Processor with 8GB RAM running Linux Ubuntu 12.04 (64-bit) operating system.

4.1. Simulation Setup

Each set of simulations was conducted on a real road network of the city of Oldenburg in Germany (normalized to [0, 10,000] 2 ), which consists of 6105 vertices and 7035 edges, and is obtained from https://iapg.jade-hs.de/personen/brinkhoff/generator/ [15]. The number of queries whose query points are uniformly placed on the road network is varied from 1000 to 10,000, and the query distance of each query is varied from 50 to 500. On the other hand, the number of moving objects is varied from 10,000 to 100,000, and the minimum computational capability of each moving object is varied from 10 to 100. The movement of each moving object follows the random waypoint model [16], which is one of the most widely used mobility models: each moving object o chooses a random point of destination on the road network and moves along the shortest path to the destination at a constant speed distributed uniformly from 0 to the maximum speed, which we set to 50 per simulation time step. Upon reaching the destination, o remains stationary for a certain period of time. When this period expires, o chooses a new destination and repeats the same process during the entire simulation time steps. We list the set of used parameters and their default values (stated in boldface) in the simulations in Table 2. In each simulation, we evaluated the effect of one parameter while the others were fixed at their default values. We ran each simulation for 1000 simulation time steps and measured the average of (i) the total number of messages transmitted and (ii) CPU-time (in ms) consumed at each simulation time step. We set each object in CM sends the location-update message to the server at each simulation time step. We set 5% of queries to be updated (i.e., reinserted after they are deleted) at each simulation time step. Please note that this update rate is sufficient to study the performance of the proposed method because we focus on the queries with the static query points.

4.2. Simulation Results

4.2.1. Effect of the Number of Queries

In the first simulation, we varied the number of queries from 1000 to 10,000 and studied the effect of the number of queries on the communication cost and the server computation cost. Figure 7 shows the effect of the number of queries on (i) the communication cost (i.e., the total number of messages communicated between the server and moving objects) and (ii) the server computation cost (i.e., the amount of CPU-time the server takes for query processing). As shown in Figure 7a, the number of queries does not affect the communication cost of CM because, in CM, moving object periodically send location-updates to the server. On the other hand, as the number of queries is increased, the communication cost of DM is also increased. However, DM clearly outperforms CM because, in DM, moving objects utilize their computational capabilities for sending messages to the server only when necessary, i.e., when they (i) leave their current vicinity regions or (ii) enter or leave any of the assigned query segments. This figure also shows that DM with the SSP-tree (denoted by DM ( SSP - tree ) ) performs much better than DM with the naïve SSP-tree (denoted by DM ( naïve   SSP - tree ) ). This is because by using the SSP-tree, where each node maintains the full list, the server can assign larger vicinity regions to moving objects than that using the naïve SSP-tree, and thus the moving objects can reduce the number of sending RequestVR messages to the server for receiving new vicinity regions (see the first advantage of the full list describe in Section 3.2). Please note that assigning larger vicinity regions to the moving objects makes them not frequently leave their current vicinity regions. In addition, the moving objects in DM ( SSP - tree ) can also reduce the number of sending unnecessary UpdateResult messages to the server (see the second advantage of the full list describe in Section 3.2). As compared to CM and DM ( naïve   SSP - tree ) , on average, DM ( SSP - tree ) incurs 12.6 % and 66.2 % , respectively, of the communication cost.
As shown in Figure 7b, the performance of all methods in terms of the server computation cost degrades as the number of queries is increased. However, as expected, CM performs much worse than DM ( naïve   SSP - tree ) and DM ( SSP - tree ) because, in CM, the server checks all moving objects if they affect the current results of all queries. It is also observed from this figure that DM ( SSP - tree ) outperforms DM ( naïve   SSP - tree ) . In both methods, the amount of CPU-time the server takes is mainly affected by the search process for assigning vicinity regions to moving objects. As already mentioned above, because of the first advantage of the full list, the SSP-tree helps the server assign larger vicinity regions to the moving objects than the naïve SSP-tree does. As a result, the server in DM ( SSP - tree ) can reduce more CPU-time than that in DM ( naïve   SSP - tree ) . As compared to CM and DM ( naïve   SSP - tree ) , on average, DM ( SSP - tree ) takes 32.3% and 63.7%, respectively, of the amount of CPU-time.

4.2.2. Effect of the Query Distance

In this simulation, we varied the query distance of the range monitoring queries from 50 to 500 to examine how the query distance affects the performance of the proposed method. As shown in Figure 8a, the query distance does not affect the communication cost of CM because of the same reason mentioned in the first simulation. On the other hand, as the query distance is increased, the communication cost of DM ( naïve   SSP - tree ) and DM ( SSP - tree ) is increased. As the query distance becomes longer, excessive intersections among query segments occur. This increases the number of node splits of the naïve SSP-tree and the SSP-tree, and thus accelerates the height growth of the naïve SSP-tree and the SSP-tree. As a result, the servers in DM ( naïve   SSP - tree ) and DM ( SSP - tree ) are led to assign smaller vicinity regions to moving objects. Because the moving objects are assigned the vicinity regions of small size, they frequently leave these vicinity regions and send RequestVR messages to the server. However, DM ( SSP - tree ) performs better and is less sensitive to this parameter than DM ( naïve   SSP - tree ) because, again, of the first advantage of maintaining the full list at each node in the SSP-tree. On average, DM ( SSP - tree ) incurs 12.1 % and 51.4 % of the communication cost, as compared to CM and DM ( naïve   SSP - tree ) , respectively.
Figure 8b shows the effect of the query distance on the server computation cost. In contrast to DM ( naïve   SSP - tree ) and DM ( SSP - tree ) , the server computation cost of CM is nearly not affected by the query distance because an increase in the query distance does not increases the amount of CPU-time the server takes for checking moving objects if they affect the current results of queries. However, DM ( SSP - tree ) still performs best in all cases. As compared to CM and DM ( naïve   SSP - tree ) , on average, DM ( SSP - tree ) takes 41.7% and 64.9%, respectively, of the amount of CPU-time.

4.2.3. Effect of the Number of Moving Objects

In this simulation, we varied the number of moving objects from 10,000 to 100,000 to study how the number of moving objects affects the performance of the proposed method.
As shown in Figure 9, as the number of moving objects is increased, the overhead of all methods is increased in terms both of the communication cost and the server computation cost. The communication cost of CM is proportional to the number of moving objects because they periodically send location-updates to the server. In contrast, the communication cost of DM ( naïve   SSP - tree ) and DM ( SSP - tree ) is slightly increased due to the benefits of utilizing the computational capabilities of moving objects. Similarly, the server computation cost of DM ( naïve   SSP - tree ) and DM ( SSP - tree ) is less sensitive to the number of moving objects than CM. We can observe from Figure 9 that DM ( SSP - tree ) performs best in terms both of the communication cost and the server computation cost.

4.2.4. Effect of the Minimum Computational Capability

In this simulation, we varied the value of the minimum computational capability of each moving object to study how the value of θ affects the performance of the proposed method. The value of θ indicates (i) the minimum number of query segments each moving object should process and (ii) the split threshold of the naïve SSP-tree and the SSP-tree. As shown in Figure 10, both the communication cost and the server computation cost of CM are not affected by this parameter at all because CM does not utilizes the computational capabilities of moving objects. On the other hand, the performance of DM ( naïve   SSP - tree ) and DM ( SSP - tree ) in terms both of the communication cost and the server computation cost is improved as the value of the minimum computational capability is increased. This is because a larger value of θ increases the average number of query segments each moving object should process, and thus the server can assign a larger vicinity region to each moving object. However, DM ( SSP - tree ) performs a lot better than DM ( naïve   SSP - tree ) . As compared to DM ( naïve   SSP - tree ) , on average, DM ( SSP - tree ) incurs 81.9 % of the communication cost and takes 78.2 % of the amount of CPU-time.

5. Discussion

Our work focuses on distributed processing of static range monitoring queries over moving objects. To utilize the computational capability o . c a p of each moving object o by using the SSP-tree, we fix the system parameter θ in advance to the minimum number of query segments o should process by assuming the server lets o to select one of the predefined values as o . c a p when o is registered at the server, so that o . c a p θ . This is because when a new moving object o ´ with its capability o ´ . c a p < θ is registered at the server, the SSP-tree needs to be reconstructed from the scratch, similarly to the index structures used in the existing distributed methods for processing static range monitoring queries in Euclidean space [2,3]. Figure 11a shows the effect of the number of queries on the initial construction time of the SSP-tree. When the number of queries is 5000 (the default value of this parameter), the construction time of the SSP-tree takes 8.7 s, which can be amortized by the long running time of the range monitoring queries if θ is fixed or is not frequently changed. However, for the case where θ is dynamically changed, more investigations should be done.
In addition, different from the centralized methods [4,5,6,7], in our work, moving objects may suffer from the additional computational burden of participating in query processing tasks. Figure 11b shows the effect of the minimum computational capability of each moving object o on the amount of CPU-time consumed by o. It can be easily observed from the figure that as the value of the minimum computational capability is increased (i.e., as the value of θ is increased), the computational burden on o is also increased. Therefore, there needs to be future consideration of how to enable the moving objects to voluntarily participate in query processing tasks so that the advantages of the proposed method can be fully realized.
Finally, another issue that needs to be addressed is the energy efficiency of moving objects. With regard to identifying the location of moving objects, our work makes the same assumption that the centralized methods do, namely, that each moving object o periodically measures its current location through GPS. However, GPS is an energy-intensive module, and thus its periodic usage can be a major energy drain for o. To achieve the energy efficiency of each moving object o, the strategy that makes o allow the GPS module to sleep should be considered. This would entail developing the method for determining a proper sleep duration Δ t for o, so that o can move freely without sensing and checking its current location against nearby queries during Δ t .

6. Related Work

Most of the early researches on spatial databases assumed the static objects in Euclidean space and focused on (i) developing efficient spatial access methods (e.g., the R-tree [17] and its variants [18,19]) and (ii) processing of snapshot queries, which retrieves the results of queries only once at a specific snapshot in time. Papadias et al. incorporated the road network into the existing spatial databases and proposed two basic methods for processing several types of snapshot queries (e.g., range queries, nearest neighbor queries, spatial join queries, and closest pair queries) in the road network [20]. The first method is the Euclidean Restriction (ER). ER first identify the candidate objects by their Euclidean distance from the query point, after which it discards the false positives based on their network distances from the query point. The second method is the Network Expansion (NE), which performs the search directly from the query point by gradually expanding the nearby vertices in the order of their network distances from the query point. Both ER and NE use the R-tree to speed up query processing. Zhong et al. proposed the G-tree, a hierarchy structure, for processing nearest neighbor queries in the road network [21]. Assuming only the broadcast communication is available, Sun et al. proposed the Network Partition Index (NPI) for processing range queries and nearest neighbor queries in the road network [22].
Later on, the focus was extended to indexing moving objects. Assuming that the trajectories of moving objects are known a priori or predictable, Saltenis et al. proposed the Time-Parameterized R-tree (TPR-tree) for indexing moving objects, where the location of each moving object is transformed into a linear function of time [23]. Tao et al. proposed the improved version of the TPR-tree, called the TPR * -tree, which uses the exactly same data structure as the TPR-tree but applies new insert and delete algorithms [24]. However, the known-trajectory assumption does not hold for most real-life application scenarios (e.g., the velocity of a typical customer on the road are frequently changed), which leads those index structures to become prohibitively expensive to update. To deal with a large number of moving objects that move arbitrarily, Lee et al. proposed a generalized bottom-up update strategy for the R-tree [25]. Wang and Zimmermann introduced the dual index design for snapshot range queries over moving objects in the road network, which utilizes the R-tree to index the road network and the in-memory grid structure to index the points of moving objects’ location [26].
Motivated by LBSs, another research direction has recently focused on processing monitoring queries. Many methods for monitoring queries have been proposed, which can be broadly classified into two categories according to the mobility of query points and objects. The first category focuses on static queries over moving objects, and the second category deals with moving queries over static/moving objects. Because our work belongs to the first category, we elaborate on the review of the representative methods in the first category and briefly review the methods in the second category. Indexing queries, instead of indexing frequently moving objects, has been considered to be an attractive strategy, which reduces the server computation cost for updating index structures because monitoring queries remain active for a long period of time and are static. Prabhakar et al. suggested to use the R-tree to index queries [5], while Kalashnkov et al. used the in-memory grid structure [6]. Wang and Roger extended [26] for processing monitoring queries in the road network [7]. These methods assume that moving objects periodically send location-updates to the server. The server, meanwhile, continually (i) receives the location-update stream; (ii) determines the queries that are affected by the movements of the objects; and (iii) updates their results if necessary. However, constant location-updates generated by a huge number of moving objects may incur significant communication bottleneck and greatly increase the overhead at the server for determining the affected queries and keeping their results up to date. In addition, because the transmission of a location-update message over a wireless connection takes a substantial amount of energy, the handheld device carried by each moving object exhausts its battery life quickly.
To help each moving object reduce the number of sending location-updates to the server, the safe region method was proposed in [4,5]. The safe region, assigned to each moving object o, is the area that (i) contains the point of o’s current location and (ii) guarantees that the current results of all the queries will remain valid as long as o does not leave it. Therefore, o need not send a location-update to the server as long as it does not leave its safe region. Although the safe region method improves the overall system performance to a certain degree, because the size of a safe region assigned to each object o is typically small, o easily leaves its current safe region and contacts the server in order to receive a new safe region. Recently, the distributed methods, namely the Monitoring Query Management (MQM) method [2] and the Query Region-tree (QR-tree) method [3] were proposed. Unfortunately, these distributed methods only deal with the objects moving freely in Euclidean space.
Focusing on processing moving monitoring queries over static objects, the safe region methods were also proposed in [8,9]. Similarly to the safe region assigned to a moving object, the safe region assigned to a query q is the region that (i) contains q . p and (ii) guarantees that while q . p remains inside it, the result of q remain unchanged. More recently, several algorithms were proposed to compute the safe exits of a query q in the road network [10,11,12]. Safe exits are a set of points that guarantee the result of q remains unchanged before q . p reaches any of these points. There were also proposed methods for processing moving monitoring queries over moving objects in the road network [13,14]. Mouratidis et al. proposed the Incremental Monitoring Algorithm (IMA) and the Group Monitoring Algorithm (GMA) [13]. IMA is based on NE [20], while GMA extends IMA with the shared execution paradigm. Liu and Hua proposed the distributed method that utilizes the computational capabilities of moving objects [14]. However, this method is not comparable to our proposed method (i.e., DM ( SSP tree ) ) because it assumes that there is no restriction on the number of queries the server can assign to moving objects. Specifically, in this method, although the number of queries a moving object o can process is at most n, the server can assign o more than n queries. On the other hand, in our proposed method, the server must assign o no more than n query segments.

7. Conclusions

In this paper, we addressed the problem of the efficient processing of range monitoring queries over the objects moving along the road network. Given a set of geographically distributed moving objects on the road, the primary goal of our study is to keep the results of queries up to date, while incurring the minimum communication cost and server computation cost by letting the moving objects evaluate several queries that are relevant to them. To achieve this, we introduced the concept of vicinity region and proposed a new spatial index structure, namely the SSP-tree. By assigning each moving object (i) a vicinity region and (ii) a set of query segments inside this region, the moving object can locally monitor whether it may affect the results of nearby queries. The SSP-tree is used to efficiently search the appropriate vicinity regions for moving objects based on their heterogeneous computational capabilities. We also described the details of how each moving object and the server communicate each other to cooperatively process range monitoring queries. Through a series of simulations, we showed the effectiveness of proposed method for processing static range monitoring queries in the road network.

Acknowledgments

This research project was supported by Ministry of Culture, Sports and Tourism (MCST) and from Korea Copyright Commission in 2017.

Author Contributions

HaRim Jung initiated the idea, developed the research concept, and wrote the manuscript. Ung-Mo Kim oversaw all of the work and revised the manuscript.

Conflicts of Interest

The authors declare no conflict of interest.

References

  1. Ilarri, S.; Mena, E.; Illarramendi, A. Location-dependent query processing: Where we are and where we are heading. ACM Comput. Surv. 2010, 42, 1–73. [Google Scholar] [CrossRef]
  2. Cai, Y.; Hua, K.A.; Cao, G.; Xu, T. Real-time processing of range-monitoring queries in heterogeneous mobile databases. IEEE Trans. Mob. Comput. 2006, 5, 931–942. [Google Scholar]
  3. Jung, H.; Kim, Y.S.; Chung, Y.D. QR-tree: An efficient and scalable method for evaluation of continuous range queries. Inf. Sci. 2014, 274, 156–176. [Google Scholar] [CrossRef]
  4. Hu, H.; Xu, J.; Lee, D.L. A generic framework for monitoring continuous spatial queries over moving objects. In Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, Baltimore, MD, USA, 13–16 June 2005. [Google Scholar]
  5. Prabhakar, S.; Xia, Y.; Aref, W.G.; Hambrusch, S. Query indexing and velocity constrained indexing: Scalable techniques for continuous queries on moving objects. IEEE Trans. Comput. 2002, 51, 1124–1140. [Google Scholar] [CrossRef]
  6. Kalashnkov, D.V.; Prabhakar, S.; Hambrusch, S.E. Main memory evaluation of monitoring queries over moving objects. Disrtib. Parallel Database 2004, 15, 117–135. [Google Scholar] [CrossRef]
  7. Wang, H.; Roger, Z. Processing of continuous location-based range queries on moving objects in road networks. IEEE Trans. Knowl. Data Eng. 2011, 23, 1065–1078. [Google Scholar] [CrossRef]
  8. Cheema, M.A.; Brankovic, L.; Lin, X.; Zhang, W.; Wang, W. Continuous monitoring of distance-based range queries. IEEE Trans. Knowl. Data Eng. 2011, 23, 1182–1199. [Google Scholar] [CrossRef]
  9. Al-Khalidi, H.; Taniar, D.; Betts, J.; Alamri, S. Monitoring moving queries inside a safe region. Sci. World J. 2014, 2014. [Google Scholar] [CrossRef] [PubMed]
  10. Yung, D.; Man, L.Y.; Lo, E. A safe-exit approach for efficient network-based moving range queries. Data Knowl. Eng. 2012, 72, 126–147. [Google Scholar] [CrossRef]
  11. Cho, H.J.; Kwon, S.J.; Chung, T.S. A safe exit algorithm for continuous nearest neighbor monitoring in road networks. Mob. Inf. Syst. 2013, 9, 37–53. [Google Scholar] [CrossRef]
  12. Cho, H.J.; Ryu, K.; Chung, T.S. An efficient algorithm for computing safe exit points of moving range queries in directed road networks. Inf. Syst. 2014, 41, 1–19. [Google Scholar] [CrossRef]
  13. Mouratidis, K.; Yiu, M.L.; Papadias, D.; Mamoulis, N. Continuous nearest neighbor monitoring in road networks. In Proceedings of the 32nd international conference on Very large data bases, Seoul, Korea, 43–54 September 2006. [Google Scholar]
  14. Liu, F.; Hua, K.A. Moving query monitoring in spatial network environments. Mob. Netw. Appl. 2012, 17, 234–254. [Google Scholar] [CrossRef]
  15. Brinkhoff, T. A framework for generating network-based moving objects. GeoInformatica 2002, 6, 153–180. [Google Scholar] [CrossRef]
  16. Broch, J.; Maltz, D.A.; Johnson, D.; Hu, Y.-C.; Jetcheva, J. A performance comparison of multi-hop wireless ad hoc network routing protocols. In Proceedings of the 4th Annual ACM/IEEE International Conference on Mobile Computing and Networking, Dallas, TX, USA, 25–30 October 1998. [Google Scholar]
  17. Guttman, A. R-trees: A dynamic index structure for spatial searching. In Proceedings of the 1984 ACM SIGMOD International Conference on Management of Data, Boston, MA, USA, 18–21 June 1984. [Google Scholar]
  18. Beckmann, N.; Kriegel, H.-P.; Schneider, R.; Seeger, B. The R*-tree: An efficient and robust access method for points and rectangles. In Proceedings of the 1990 ACM SIGMOD International Conference on Management of Data, Atlantic City, NJ, USA, 23–25 May 1990. [Google Scholar]
  19. Roussopoulos, N.; Faloutsos, C. The R+-tree: A dynamic index for multi-dimensional objects. In Proceedings of the 13th International Conference on Very Large Data Bases, San Francisco, CA, USA, 1–4 September 1987. [Google Scholar]
  20. Papadias, D.; Zhang, J.; Mamoulis, N.; Tao, Y. Query processing in spatial network databases. In Proceedings of the 29th international conference on Very large data bases, Berlin, Germany, 9–12 September 2003. [Google Scholar]
  21. Zhong, R.; Li, G.; Tan, K.L.; Zhou, L.; Gong, Z. G-tree: An efficient and scalable index for spatial search on road networks. IEEE Trans. Knowl. Data Eng. 2015, 27, 2175–2189. [Google Scholar] [CrossRef]
  22. Sun, W.; Chen, C.; Zheng, B.; Chen, C.; Liu, P. An air index for spatial query processing in road networks. IEEE Trans. Knowl. Data Eng. 2015, 27, 382–395. [Google Scholar] [CrossRef]
  23. Saltenis, S.; Jensen, C.; Leutenegger, S.; Lopez, M.A. Indexing the positions of continuously moving objects. In Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, Dallas, TX, USA, 16–18 May 2000. [Google Scholar]
  24. Tao, Y.; Papadias, D.; Sun, J. The TPR*-tree: An optimized spatio-temporal access method for predictive queries. In Proceedings of the 29th International Conference on Very Large Data, Berlin, Germany, 9–12 September 2003. [Google Scholar]
  25. Lee, M.L.; Hsu, W.; Jensen, C.S.; Cui, B.; Teo, K.L. Supporting frequent updates in R-trees: A bottom-up approach. In Proceedings of the 29th International Conference on Very Large Data Bases, Berlin, Germany, 9–12 September 2003. [Google Scholar]
  26. Wang, H.; Zimmermann, R. A novel dual-index design to efficiently support snapshot location-based query processing in mobile environments. IEEE Trans. Mob. Comput. 2010, 9, 1280–1292. [Google Scholar] [CrossRef]
Figure 1. Difference between Euclidean space and the road network. (a) The query range in Euclidean space; (b) The query range in the road network.
Figure 1. Difference between Euclidean space and the road network. (a) The query range in Euclidean space; (b) The query range in the road network.
Ijgi 06 00322 g001
Figure 2. An example of the range monitoring query in the road network. (a) The road network G; (b) The range monitoring query in G.
Figure 2. An example of the range monitoring query in the road network. (a) The road network G; (b) The range monitoring query in G.
Ijgi 06 00322 g002
Figure 3. System overview.
Figure 3. System overview.
Ijgi 06 00322 g003
Figure 4. Examples of approximation of query ranges and the space partitioning approach used in this paper. (a) Approximation of query ranges; (b) The space partitioning approach used in this paper.
Figure 4. Examples of approximation of query ranges and the space partitioning approach used in this paper. (a) Approximation of query ranges; (b) The space partitioning approach used in this paper.
Ijgi 06 00322 g004
Figure 5. Simple intersection relationships between q s and N. (a) q s is inside N or N contains q s ; (b) q s partially intersects N or vice versa; (c) q s fully intersects N or vice versa.
Figure 5. Simple intersection relationships between q s and N. (a) q s is inside N or N contains q s ; (b) q s partially intersects N or vice versa; (c) q s fully intersects N or vice versa.
Ijgi 06 00322 g005
Figure 6. An example of the SSP-tree.
Figure 6. An example of the SSP-tree.
Ijgi 06 00322 g006
Figure 7. Effect of the number of queries on the communication cost and the server computation cost. (a) Total number of messages vs. the number of queries; (b) The amount of CPU-time vs. the number of queries.
Figure 7. Effect of the number of queries on the communication cost and the server computation cost. (a) Total number of messages vs. the number of queries; (b) The amount of CPU-time vs. the number of queries.
Ijgi 06 00322 g007
Figure 8. Effect of the query distance on the communication cost and the server computation cost. (a) Total number of messages vs. the query distance; (b) The amount of CPU-time vs. the query distance.
Figure 8. Effect of the query distance on the communication cost and the server computation cost. (a) Total number of messages vs. the query distance; (b) The amount of CPU-time vs. the query distance.
Ijgi 06 00322 g008
Figure 9. Effect of the number of moving objects on the communication cost and the server computation cost. (a) Total number of messages vs. the number of moving objects; (b) The amount of CPU-time vs. the number of moving objects.
Figure 9. Effect of the number of moving objects on the communication cost and the server computation cost. (a) Total number of messages vs. the number of moving objects; (b) The amount of CPU-time vs. the number of moving objects.
Ijgi 06 00322 g009
Figure 10. Effect of the minimum computational capability on the communication cost and the server computation cost. (a) Total number of messages vs. the minimum computational capability; (b) The amount of CPU-time vs. the minimum computational capability.
Figure 10. Effect of the minimum computational capability on the communication cost and the server computation cost. (a) Total number of messages vs. the minimum computational capability; (b) The amount of CPU-time vs. the minimum computational capability.
Ijgi 06 00322 g010
Figure 11. Construction time of the SSP-tree and CPU-time consumed by a moving object. (a) Construction time of the SSP-tree vs. the number of queries; (b) The amount of CPU-time consumed by a moving object in DM ( SSP - tree ) vs. the minimum computational capability; all other parameters have their default values (see the values stated in boldface in Table 2).
Figure 11. Construction time of the SSP-tree and CPU-time consumed by a moving object. (a) Construction time of the SSP-tree vs. the number of queries; (b) The amount of CPU-time consumed by a moving object in DM ( SSP - tree ) vs. the minimum computational capability; all other parameters have their default values (see the values stated in boldface in Table 2).
Ijgi 06 00322 g011
Table 1. Frequently used notation.
Table 1. Frequently used notation.
NotationExplanation
G = ( V , E ) A graph model of the road network (V: a set of vertices, E: a set of edges)
v i ( V ) A vertex in G
v i v j or e ( E ) An edge in G
oA moving object
o . p The point of o’s current location
o . c a p o’s computational capability
q = ( q . p , q . d ) A range monitoring query ( q . p : query point, q . d : query distance)
Q R ( q ) The query range of q
q s [ p a , p b ] or q s (of q)A query segment (of q)
d i s t E ( · , · ) The Euclidean distance between any two points in G
d i s t N ( · , · ) The network distance between any two points in G
NA SSP-tree node or its corresponding subspace
N . C The count variable maintained in N
N . F L The full list maintained in N
Q R T Query relevance table
S R T Segment relevance table
Table 2. Simulation parameters and their values.
Table 2. Simulation parameters and their values.
Simulation ParameterValue Used (Default)
Number of queries1000∼10,000 (5000)
Query distance50∼500 (250)
Number of moving objects10,000∼100,000 (50,000)
Minimum computational capability10∼100 (50)

Share and Cite

MDPI and ACS Style

Jung, H.; Kim, U.-M. The SSP-Tree: A Method for Distributed Processing of Range Monitoring Queries in Road Networks. ISPRS Int. J. Geo-Inf. 2017, 6, 322. https://doi.org/10.3390/ijgi6110322

AMA Style

Jung H, Kim U-M. The SSP-Tree: A Method for Distributed Processing of Range Monitoring Queries in Road Networks. ISPRS International Journal of Geo-Information. 2017; 6(11):322. https://doi.org/10.3390/ijgi6110322

Chicago/Turabian Style

Jung, HaRim, and Ung-Mo Kim. 2017. "The SSP-Tree: A Method for Distributed Processing of Range Monitoring Queries in Road Networks" ISPRS International Journal of Geo-Information 6, no. 11: 322. https://doi.org/10.3390/ijgi6110322

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop