Title: Generating Raster DEM from Mass Points via TIN Streaming
1Generating Raster DEMfrom Mass Pointsvia TIN
Streaming
raster DEM
LIDAR points
Jonathan ShewchukUC Berkeley
Martin IsenburgUC Berkeley
Yuanxin LiuUNC Chapel Hill
Jack SnoeyinkUNC Chapel Hill
Tim ThirionUNC Chapel Hill
2Generating DEMs from LIDAR
LIDAR points
3Billions of Points
courtesy of www.ncfloodmaps.com
4DEM Generation via TIN Streaming
read points from disk
5Example Result
500,141,313 Points 11 GB(binary, xyz, doubles)
LIDAR points
? on a household laptop with two harddisks ?
? in 67 minutes ?
? 64 MB of main memory ?
? 270 MB temporary disk space ?
6Related Work
7Rasterizing Billions of Points
- popular GIS packages
- ArcGIS 9.1 (limit 25 million points, 1 GB)
- QTModeller 4 (limit 50 million points, 1 GB)
- GRASS (limit 25 million points, 1 GB)
Agarwal et al. 06
8Interpolation Methods
- Inverse Distance Weighting (IDW)
- Natural Neighbors
- Kriging
- Splines
- TIN
- linear
- quintic
9External Memory Quadtree
From Point Cloud to Grid DEM A Scalable
Approach Agarwal et al. 06
- rearrange points on disk into quadtree
- process cell
- find its neighbors
- interpolate all (i,j)
- write rasters to temporary file
- sort temporary file on (i,j) write DEM
10Our Approach TIN Streaming
- reorganize computations not points
- compute TIN in places where all points have
already arrived - raster, output deallocate
- keep parts that miss neighbors
- enhance points with spatial finalization
11Our Approach TIN Streaming
- reorganize computations not points
- compute TIN in places where all points have
already arrived - raster, output deallocate
- keep parts that miss neighbors
- enhance points with spatial finalization
12Our Approach TIN Streaming
- reorganize computations not points
- compute TIN in places where all points have
already arrived - raster, output deallocate
- keep parts that miss neighbors
- enhance points with spatial finalization
13Delaunay Triangulation
- standard algorithm for TIN construction
- good properties for interpolating points
- a triangulation in which every triangle has an
empty circumscribing circle
14Incremental Point Insertion
Lawson 77 Bowyer 81 Watson 81
- locate triangle enclosing the point
- find and remove all triangles with non-empty
circumcircles
- triangulate by connecting new point
15Spatial Finalization Tags
- inject tags intothe point streamthat inform
whengrid cells are freeof future points
finalized region
future pointsonly arrive inthese cells
- use tags to certify triangles as beingpart of
the finaltriangulation andoutput them
16Streaming TIN Generation
output to disk
input from disk
small bufferin main memory
Streaming Computation of Delaunay
Triangulations Isenburg et al. 06
- triangulate point stream seamlessly
- output completed parts reuse memory
17Rasterization of Streaming TIN
input (pipe)streaming TINfrom triangulator
yet anothersmall buffer
- points from single UTM time zone
- triangles with long edges are killed
- output to a single row-ordered DEM
18Streaming Rasterization Pipeline
spfinalize -i points.raw -ospb spdelaunay ispb
osmb -ospb tin2iso ismb o dem.bil
19The Finalizer(spfinalize)
20Spatial Finalization of Points
? compute bounding box
21Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
22Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
23Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
24Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
25Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
26Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
27Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
28Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
29Spatial Finalization of Points
- ? compute bounding box
- ? create finalization grid
- count number of points per cell
- ? output finalized points
- buffer per grid cell
- if full, output points in one randomized
chunk followed by finalization tag
30Exploit the Existing Coherence
- document with finalization tags
- enhance by releasing chunks of points
- ? benefits of global sort, but cheaper
raw point stream
finalized point stream
31Exploit the Existing Coherence
- document with finalization tags
- enhance by releasing chunks of points
- ? benefits of global sort, but cheaper
raw point stream
finalized point stream
32Unfinalized Region as Quadtree
- as tags finalize cell after cell, maintain
remaining cells in adaptive quadtree - ? used for efficient overlap tests by the
triangulator
33The Triangulator(spdelaunay)
34Modified Incremental Delaunay
- when reading afinalization tag
- find certified triangles
- output them to disk or pipe
- deallocate data structure
35Modified Incremental Delaunay
- when reading afinalization tag
- find certified triangles
- output them to disk or pipe
- deallocate data structure
36Modified Incremental Delaunay
- when reading afinalization tag
- find certified triangles
- output them to disk or pipe
- deallocate data structure
37The Rasterizer(tin2dem)
38Rasterizing the Streaming TIN
39Results
40Neuse-RiverBasin
41Pipeline Details for the 20 ft DEM
6 min
10 MB60,388 triangles
5 MB512 x 512 grid
6 min
35 MB 2,249,268 points
43 min
270 MB 239 files
8 min
19 MB444 million rasters
46 MB128 rows per file
42Comparison to (20 ft)
Agarwal et al. 06
- 53 hours
- 3.4 GHz desktop
- 10,000 RPM disks
- scratch space
- quadtree 8 GB
- rasters 2.5 GB
- 67 minutes
- 2.1 GHz laptop
- 5,400 RPM disks
- scratch space
- compressed rasters 270 MB
- 86 of CPU time for expensive RST
- remaining 7.5 hours
- constructing quadtree 1.1 hours
- finding cell neighbors 5.6 hours
43Demos Discussion
44Demos
- streaming generation of DEM
- extraction of elevation contours
45Streaming DEM Rasterization
raw points
46Main Features
- order of magnitude faster than method that uses
external memory
- avoid temporary query structure on disk
- data-driven, no gathering of neighbors
- interleave input computation output
- 100 CPU usage while interpolating
- no global sort
- dont fight the data, use existing coherence
47Future Work
- breaklines / barriers (e.g. rivers, roads)
- use Constraint Delaunay Triangulation
- other interpolation methods
- natural neighbors
- inverse distance weighting
- stream other tasks
- thinning of points
- compression of raw LIDAR data (useful?)
- hydrological enforcement (streamable?)
48Acknowledgements
- data
- Kevin Yi, Duke
- support
- NSF grants 0429901 0430065
- "Collaborative Research Fundamentalsand
Algorithms for Streaming Meshes." - NGA award HM1582-05-2-0003
- Alfred P. Sloan Research Fellowship
49Thank You
executables, video, slides, paper, and soon also
source code http//www.cs.unc.edu/isenburg/