leonardzh / Terrain_Trees

A framework for the efficient representation and analysis of triangulated terrains

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Terrain Trees library

Terrain trees are a new in-core family of spatial indexes for the representation and analysis of Triangulated Irregular Networks (TINs). Terrain trees combine a minimal encoding of the connectivity of the underlying triangle mesh with a hierarchical spatial index, implicitly representing the other topological relations among vertices, edges and vertices. Topological relations are extracted locally within each leaf block of the hierarchal index at runtime, based on specific application needs. We have developed a tool based on Terrain trees for terrain analysis, which includes state-of-the-art estimators for slope and curvature, and for the extraction of critical points. By working on TINs generated from big LiDAR (Light, Detection and Ranging) data sets, we demonstrate the effectiveness and scalability of the Terrain trees against a state-of-the-art compact data structures.

Reference Paper

Riccardo Fellegara, Federico Iuricich, and Leila De Floriani. Efficient representation and analysis of triangulated terrains. In Proceedings of SIGSPATIAL’17, Los Angeles Area, CA, USA, November 7–10, 2017, 4 pages. doi

Features

  • Three spatial indexes based on
    • point threshold (PR-T tree)
    • triangle threshold (PMR-T tree)
    • point and triangle thresholds (PM-T tree)
  • Two spatial decomposition
    • quadtree
    • kD-tree
  • Spatial queries
  • Terrain Features
    • Triangle/Edges slope computation
    • Critical Points extraction
  • Curvature computation (reference1and reference2)
    • Concentrated curvature
    • Mean and Gaussian CCurvature
  • Soup to indexed mesh conversion
  • Points cloud indexing
    • multifield extraction

How to compile

The library requires only the boost library (for dynamic_bitset class) and cmake installed in your system.

Once in the root of the repository type from the command line

cmake CMakeList.txt

and once configured

make

This command generates a portable library file, located into lib folder, as well as an executable into the bin folder.

The compilation process has been test on linux and mac systems.

Execute unit tests

To compile the unit-tests run from command line the following command

make tests

Once compiled, it is possible to test the main functionalities running a script located into the bin folder.

From command line executing

sh run_tests.sh

checks the functionalities of the main implemented features. The output files are saved into the data folder (where the input datasets are located).

It is possible to clean the output files running, from command line (from data folder), the following command

sh clean_up.sh

Use the main library

In the bin folder there is the main executable file named terrain_trees that contains the whole library. For a complete list of the command line options refer the wiki page.

Supported Input Files

The Terrain trees framework supports two input formats for the triangulated irregular network:

  • off
  • tri
  • soup

For a detailed description of the input formats refer the wiki page.

About

A framework for the efficient representation and analysis of triangulated terrains

License:GNU General Public License v3.0


Languages

Language:C++ 98.9%Language:CMake 1.0%Language:Shell 0.1%