Computing Contour Maps & Answering Contour Queries

advertisement
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
Download