Giter VIP home page Giter VIP logo

terrain_trees's Introduction

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, Yunting Song, Federico Iuricich, and Leila De Floriani. Terrain trees: a framework for representing, analyzing and visualizing triangulated terrains. Submitted for review, 2021.

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
    • Roughness computation (reference paper)
  • Curvature computation (reference1 and reference2)
    • Concentrated curvature
    • Mean and Gaussian CCurvature
  • Soup to indexed mesh conversion
  • Points cloud indexing
  • Topology Data Analytics (reference1 and reference2)
    • Gradient computation
    • Critical points extraction
    • Data segmentation / Critical net extraction
    • Topological simplification (PR-T tree only)

How to compile

The library requires the boost library (for dynamic_bitset class), Eigen3 library (for computing eigenvalues) 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 three input formats for the triangulated irregular network:

  • off
  • tri
  • soup

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

terrain_trees's People

Contributors

fellegarar avatar ytsong74 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

umdgeovis

terrain_trees's Issues

small inefficiencies in indexes_vertex function in Node_V class

I have to refactor a bit how this function is implemented, since for very fast queries, like batched VT extraction, PMR strategies, that extracts once the v_range at the beginning and then use two local variables is somehow more efficient that what I am doing for PM and PR trees.

I patched this feature/additional_terrain_analysis_operator branch.. to try this out, but I have to propagate the change to all algorithms if necessary and (finally) patch also the other branches and master

batched topological queries inefficient for PR-T and PM-T trees

for PR-T and PM-T trees the algorithms that extract all VTs, also compute the domain of each node.
This is not necessary, since we have the v_range, and, thus, the domain be computed only for a PMR-T tree.

affected files:
topological_queries.h
topological_queries_batched.h
topological_queries.cpp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.