Computing Contour Maps & . Answering Contour Queries Pankaj K. Agarwal Joint work with Lars Arge Thomas Molhave Bardia Sadri The TerraStream Modules (Classification) (DEM Construction) Conditioning Flow Routing Flow Accumulation Watershed Hierarchies Quality Metrics Contour Lines What is a Terrain Representation: Triangulated Irregular Network (TIN) Level Sets, Contours, and Contour Maps Computing Contours Maps Answering Contour Queries Preprocess Terrain S into a data structure Given h, compute contour at height h. Contour Maps Contour Maps • Usage of contour lines (also called iso-contours, isogons, etc) goes back to at least 17th century Philosophical Transactions of Royal Society of London, 1779 Internal Memory Algorithm Find a seed point on each contour and traverse the triangulation to trace each contour Use a simple data structure to compute seed points Query time: O(log N + T) T: #contour edges Contour map: O(Nlog N +T) T: #contour map edges For massive terrains I/O efficiency is bad: O(N+T) instead of O((N+T)/B) I/O-Efficient Algorithms Answering a contour query: Preprocessing O(NlogBN), Space: O(N/B) blocks Query: O(logBN+T/B) Our results • Computing contour maps: O(Sort(N)+T/B) I/Os • Answering contour queries • Preprocessing Time: O(Sort(N)) I/Os • Space: O(N/B) disk blocks • Query: O(logBN+T/B) Ordering Theorem: A total ordering, called C-ordering, of triangles can be computed in O(Sort(N)) I/Os s.t. the subsequence of triangles intersecting a contour appears along the contour and contours in a level set are broken in nested order. [ [ [ ] [ ] ] ] Individual contours can be retrieved in O(T/B)I/Os from this ordering The Algorithm 1. 2. 3. 4. 5. 6. Sort the vertices in the order of increasing height. Compute the C-ordering of the triangles Determine the rank of each triangle in C-ordreing. Scan the triangles in the order of increasing height of their lowest vertices: If a triangle intersects some level-set of interest add it to a buffer-tree using its rank for the key. When the scan line reaches a height of interest, 1.flush the buffer tree 2. use the stack-based algorithm to extract individual contours. 7. Delete any triangle that does not intersect the next level-set. Use persistent buffer trees to store C-ordering at all heights! Computing the C-Ordering Height Graph Critical Points maximum saddle minimum regular Simple Terrains Positive and Negative Saddles Positive and Negative Cut-Trees Simplifying Terrains by Surgery What does simplification do to contours? [ [ [ ] [ ] ] ] Extensions • (We believe) Our approach extends to higher genus 2manifolds, i.e., contour queries in a fixed direction Future Directions Computing iso-surface maps or answering iso-surface queries in the I/O model Preprocess a given 2-manifold M, represented as a triangulation, in a linear-size data structure so that For a query plane h, report the contours of M∩h quickly Time: O(n2/3+T) in RAM Model Idea: grow contours contiguously but in parallel