1 / 18

Point Location

Point Location. Reading: Chapter 6 of the Textbook Driving Applications Knowing Where You Are in GIS Related Applications Triangulation using Trapezoidal Maps Polygonization of Implicit Surfaces. Knowing Where You Are.

nardo
Download Presentation

Point Location

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Point Location • Reading: Chapter 6 of the Textbook • Driving Applications • Knowing Where You Are in GIS • Related Applications • Triangulation using Trapezoidal Maps • Polygonization of Implicit Surfaces M. C. Lin

  2. Knowing Where You Are • Given a map and a query point q specified by its coordinates, find the region of the map containing q. • A map can be treated as a subdivision of the plane into regions, or planar subdivision. • A map can be stored electronically for query preprocessing to answer point location query fast and display the map interactively. M. C. Lin

  3. Planar Point Location • Let S be a planar subdivision with n edges. The planar point location problem is to store S in such a way that we can answer: given a query point q, report the face f of S that contains q. If q lies on an edge or a vertex, report so.  Partition the plane into vertical slabs. Store the x-coordinates of the vertices in the sorted order in an array. This makes it possible to determine in O(log n) time the slab contains a query point q. M. C. Lin

  4. A Possible Solution • Do a binary search with the x-coordinate of q in the array storing x-coordinates of the subdivision. • Do a binary search within that slab. Given a segment s and the query point q, determine whether q lies above, below or on s. • Query time is good: O(log n). But the storage requirement is high: O(n2)!!! We need a better solution: trapezoidal maps! M. C. Lin

  5. Trapezoidal Maps • We have a set S of n non-crossing line segments, enclosed in a bounding box R, and with no two distinct end points lie on a common vertical line. We call such a set a set of line segments in general position. • The trapezoidal map T(S) of S -- also known as the vertical decomposition or trapezoidal decomposition of S -- is obtained by drawing two vertical extensions from every endpoint p of a segment in S, one going upwards and one going downwards. The extensions stop when they meet another segment of S or the boundary of R. • A face in T(S) is bounded by some edges of T(S) . Some of these edges or sides of a face may be adjacent & collinear. M. C. Lin

  6. Left/Right Edge of Trapezoid • It degenerates to a point, which is the common left/right endpoint of top( ) and bottom(). • It is the lower vertical extension of the left/right endpoint of top( ) that abuts on bottom(). • It is the upper vertical extension of the left/right endpoint of bottom() that abuts on top( ). • It consists of the upper and lower extension of the right endpoint p of a third segment s. These extension abuts on top( ) & bottom() resp. • It’s left/right edge of R. M. C. Lin

  7. Properties of Trapezoidal Maps • The trapezoidal map T(S) of aset S of n line segments in general positions contains at most 6n+4 vertices, at most 3n+1 trapezoids. • The general position assumption is used to established the complexity bounds, but doesn’t affect the algorithm, as will be shown later. • A trapezoid  ofT(S) is uniquely defined by its top(), bottom(), leftp() and rightp(); together they store the records of the line segments & endpoints. This structure uses the adjacency of trapezoids to link the subdivision as a whole. M. C. Lin

  8. Trapezoidal Map for Point Location • Use randomized incremental algorithm to construct the trapezoidal map T(S) & point location data structure D. T(S) and D are inter-linked through pointers. • The search structure D is a directed acyclic graph with a single root and exactly one leaf for every trapezoid of T(S). There are 2 types of inner nodes (of out-degree 2): x-nodes, labeled with an endpoint of some segment in S, and y-nodes, labeled with a segment itself. • A query with q starts at the root and proceeds along a directed path to a leaf. At an x-node, the test is “Does q lie to the left or right of the vertical line through endpoint stored at this node?” At a y-node, the test is “Does q lie above or below the segment s stored here?” M. C. Lin

  9. Randomized Incremental Algorithm • Construction of the search structure is incremental: it adds one segment at a time. After each addition, it updates D and T(S). • The order in which the segments are added affects the construction of search structure D. Some results in a good structure and good query time, while others will be bad. But, we are interested in the algorithm that gives us good expected performance, not the best worst-case performance. M. C. Lin

  10. TrapezoidalMap(S) Input: A set S of n non-crossing line segments Output: The trapezoidal map T(S) and a search data structureD for T(S) in a bounding box. 1. Determine a bounding box R that contains all segments of S, and initialize trapezoidal map structure T & search structure D for it 2. Compute a random permutation s1, s2,…, sn of the elements of S. 3. for i  1 to n 4. do Find set 0, 1,…, kof trapezoids in T properly intersected by si 5. Remove 0, 1,…, kfrom T and replace them by new trapezoids that appear because of the insertion of si 6. Remove the leaves of 0, 1,…, kfrom D, and create leaves for the new trapezoids. Link the new leaves to the existing inner nodes by adding some new inner nodes, as explained next. M. C. Lin

  11. FollowSegment(T, si) Input: A trapezoidal map T and a new segment si Output: The sequence 0, 1,…, kof trapezoids intersected by si 1. Let p and q be the left and right endpoint of si 2. Search with p in the search structure to find 0 3. j  0 4. while q lies to the right of rightp(i ) 5. do if rightp(i ) lies above si 6. then Let j+1 be the lower right neighbor of j 7. else Let j+1 be the upper right neighbor of j 8. j  j + 1 9. return0, 1,…, j M. C. Lin

  12. Algorithm Analysis • The expected running time is the average running time taken over all n! permutations. The expected size of D is the average sizes of all these resulting search structures. The expected query time for q is the average query time for point q over all runs. • Algorithm TrapezoidalMap computes the trapezoidal map T(S) of a set S of n line segments in general position and a search structure D for T(S) in O(n log n) expected time. The expected size of the search structure D is O(n) and for any query point q the expected query time is O(log n). M. C. Lin

  13. Average Query Time Analysis • The query time for q is linear in the length of the path in D that is traversed when querying with q. It is increased by at most 3 in every iteration based on case analysis. So, 3n is the best possible worst-case bound over all possible insertion order for S. But, we’re interested in average query time w.r.t. all n! possible insertion orders. • Let Xi , for 1 i  n, for denote the number of nodes on the path created in i’th iteration. We can express the expected path length as: E[1 i  n Xi] = 1 i  n E[Xi] M. C. Lin

  14. Average Query Time Analysis Xi 3  E[Xi]  0*(1-Pi ) + 3*Pi E[Xi]  3Pi • q(Si ) disappears if and only if one ofthe top(q(Si )), bottom(q(Si )), leftp(q(Si ) or rightp(q(Si )) disappears with the removal of si. The probability of each event is 1/i. So, Pi = Pr[q(Si )q(Si-1 )] = Pr[q(Si ) T(Si-1 )]  4/i E[1 i  n Xi]  1 i  n 3Pi  1 i  n 12/i = 121 i  n 1/i = 12Hn Hn = 1/1 + 1/2 + 1/3 + … + 1/n ln n < Hn < (ln n + 1) Therefore, the query time takes O(log n) M. C. Lin

  15. Expected Size of the Structure • To bound the size, it suffices to bound the number of nodes in D. The leaves in D are in one-to-one correspondence with the trapezoids in T(S), of which there are O(n). Let kibe no. of new trapezoids created in iteration i, due to insertion of segment si: O(n) + E1 i  n(number of inner nodes created in iteration i) O(n) + E[1 i  n (ki - 1)] = O(n) + 1 i  n E[ki]  sSi T(Si) (,s)  4 |T(Si )| = O(i) E[ki] = (1/i)  sSi T(Si) (,s)  O(i)/i = O(1) Thus, the size of the structure is bounded by O(n). M. C. Lin

  16. Expected Construction Time • The time to insert segment siis O(ki) plus the time needed to locate the left endpoint of siin T(Si-1). Use the earlier bound on ki, we get the expected running time for the construction: O(1) + 1 i  n { O(log i) + O(E[ki]) } = O(n log n) M. C. Lin

  17. Naïve Assumptions • General position statement assumes no two distinct points have the same x-coordinate. • Assume that a query point never lies on the vertical line of an x-node on its search path, nor on the segment of a y-node. M. C. Lin

  18. Dealing with Degeneracies • Use symbolic perturbation. In effects, use an affine mapping called “shear transform” along the x-axis. • The algorithm does not compute any geometric objects; it never actually computes coordinates of the endpoints. All it does is to apply 2 elementary operations to the input points: • Take 2 distinct points p & q and decides whether q lies to the left, right or on the vertical line through p. • Take 1 of the input segments, specified by p1 & p2, and tests whether a third point q lies above, below, or on this segment. It is only applied when a vertical line through q intersects with this segment. M. C. Lin

More Related