Terrain Analysis Using Digital Elevation Models (TauDEM) software for hydrologic terrain analysis and channel network extraction.

Overview
TauDEM (Terrain Analysis Using Digital Elevation Models) is a suite of Digital Elevation Model (DEM) tools for the extraction and analysis of hydrologic information from topography as represented by a DEM.

For more information on the development of TauDEM please refer to the wiki https://github.com/dtarb/TauDEM/wiki.

For the latest release and detailed documentation please refer to the website: http://hydrology.usu.edu/taudem.


Building on Linux
-----------------
Both make and Cmake options are available to accommodate different preferences and system demands
Using make:
> cd TauDEM
> mkdir bin
> cd src
> make
The executables are written to bin directory

Using Cmake:
> cd src && mkdir build && cd build
> cmake ..
> make && make install
The executables are written to /usr/local/taudem directory.  This can be changed at the second last line (following DESTINATION) if desired.

Dependencies
------------
Dependencies include GDAL, MPI and C++ 2011.
On Windows Dependencies are provided in the Windows Installer

On Linux dependencies can be tricky.  I've added the following scripts to help, though you may need to adjust based on your system.  
GDAL:  GDAL.sh installs from GDAL source. You could also try
apt-get install gdal-bin libgdal-dev
apt-get install gdal-bin=2.1.3+dfsg-1~xenial2
apt-get install libmpich-dev (on Bionic 18.04 LTS)  [Suggested by another user - not verified]

C++: The script GCC.sh contains some commands I've used to get the required compiler.

MPI: MPICH2.sh installs from mpich.org stable distribution source.
sudo apt-get install openmpi-bin may also be an option, but I have not tried this.

Testing
-------
See the repository https://github.com/dtarb/TauDEM-Test-Data for test data and scripts that exercise every function.  These can also serve as examples for using some of the functions.

Comments
  • missing gdal111.dll and broken page for downloading

    missing gdal111.dll and broken page for downloading

    I did a complete Windows install (Version 5.3.4), and I keep getting this error message:

    "The program can't start because gdal111.dll is missing from your computer. Try reinstalling the program to fix this problem."

    I used the recommended Complete Installer. When I went to download the GDAL 111 individually, it took me to a broken page.

    I've reinstalled with no luck. Tried using both the command prompt and the ArcGIS toolbox. Any thoughts? image

    image

    opened by LaraU 21
  • Entry Point Not Found error - C runtime library/.NET version?

    Entry Point Not Found error - C runtime library/.NET version?

    Hello,

    I've installed TauDEM as per the instructions on Windows 10 by using the TauDEM installer as well as Microsoft MPI (v8.1). I can access Taudem via the command line and can also add the toolbox in Arc. On running a command following the instructions from here using my own DEM (which is a valid GeoTiff) as per:

    mpiexec -n 8 PitRemove -z ./ny_crop.tif -fel ./ny_crop_fel.tif
    

    I am receiving an error stating:

    PitRemove.exe – Entry Point Not Found
    
    The procedure entry point sqlite3_create_function_v2 could not be located in the dynamic link library     C:\Program Files\GDAL\spatialite.dll.
    

    My installation has the following added to my path - as added by the TauDEM and MPI installers:

    C:\Program Files\Microsoft MPI\Bin\
    C:\GDAL
    C:\Program Files\GDAL
    C:\Program Files\TauDEM\TauDEM5Exe
    

    The sptiallite.dll is located as in the error message at C:\Program Files\GDAL\spatialite.dll

    I am wondering if the Entry Point error may be linked to the C runtime library or .NET version I have - which versions were used/tested with TauDEM? I wonder if there is a version incompatibility at my end.

    opened by Chris35Wills 15
  • Move Outlets to Streams throwing errors

    Move Outlets to Streams throwing errors

    I moved an ArcMap project from my desktop to my MacBook laptop. I repeat the analysis steps using the same input files. All goes well until I get to MoveOutletstoStreams and there the script fails. Something to do with versions? I just downloaded the latest TauDEM to my MacBook, which is running ArcGIS 10.4

    opened by sjskhalsa 15
  • Develop branch is broken

    Develop branch is broken

    I tried to improve build system a bit in Develop branch, but looks like it is broken

    In file included from /home/alex/devel/TauDEM/src/commonLib.h:101:0,
                     from /home/alex/devel/TauDEM/src/tiffIO.h:49,
                     from /home/alex/devel/TauDEM/src/tiffIO.cpp:47:
    /home/alex/devel/TauDEM/src/linearpart.h: In member function ‘void linearpart<datatype>::savedxdyc(tiffIO&)’:
    /home/alex/devel/TauDEM/src/linearpart.h:523:16: error: invalid use of incomplete type ‘class tiffIO’
          dxc[i]=obj.getdxc(globalY);
                    ^
    In file included from /home/alex/devel/TauDEM/src/linearpart.h:42:0,
                     from /home/alex/devel/TauDEM/src/commonLib.h:101,
                     from /home/alex/devel/TauDEM/src/tiffIO.h:49,
                     from /home/alex/devel/TauDEM/src/tiffIO.cpp:47:
    /home/alex/devel/TauDEM/src/partition.h:46:7: note: forward declaration of ‘class tiffIO’
     class tiffIO;
           ^
    In file included from /home/alex/devel/TauDEM/src/commonLib.h:101:0,
                     from /home/alex/devel/TauDEM/src/tiffIO.h:49,
                     from /home/alex/devel/TauDEM/src/tiffIO.cpp:47:
    /home/alex/devel/TauDEM/src/linearpart.h:524:13: error: invalid use of incomplete type ‘class tiffIO’
       dyc[i]=obj.getdyc(globalY);
                 ^
    In file included from /home/alex/devel/TauDEM/src/linearpart.h:42:0,
                     from /home/alex/devel/TauDEM/src/commonLib.h:101,
                     from /home/alex/devel/TauDEM/src/tiffIO.h:49,
                     from /home/alex/devel/TauDEM/src/tiffIO.cpp:47:
    /home/alex/devel/TauDEM/src/partition.h:46:7: note: forward declaration of ‘class tiffIO’
     class tiffIO;
    
    opened by alexbruy 14
  • ERROR 000732: Input Raster Dataset

    ERROR 000732: Input Raster Dataset

    I download and installed TauDEM for examining the capability of the tool to edit the DEM. I extracted and imported the elevation to ArcMap and ran the 'pit remove' tool. When it finished running it shows error message;

    Process started:

    Executing: Calculate Statistics

    Failed script PitRemove...

    Traceback (most recent call last): File "C:\Program Files\TauDEM\TauDEM5Arc\PitRemove.py", line 63, in arcpy.CalculateStatistics_management(outFile) File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\management.py", line 13825, in CalculateStatistics raise e ExecuteError: Failed to execute. Parameters are not valid. ERROR 000732: Input Raster Dataset: Dataset D:\work\projects\test\Demo\cubdemfel.tif does not exist or is not supported Failed to execute (CalculateStatistics).

    Failed to execute (PitRemove).

    I could not process further. Any help would be greatly appreciated.

    Regards, Sandhya

    Answer 
    opened by sandhyageo 14
  • [Request] Port open file fixes to single-file version

    [Request] Port open file fixes to single-file version

    Hi. On Mac OS X, I am seeing many processes of the single-file version (5.1.1) of TauDEM finishing with open file handles, whereby the output file(s) become unreadable by other apps. It looks like this has been fixed in 45686615, and maybe other commits in this repository.

    I would like to know if these fixes are planned to be ported to the single-file version? Thanks.

    opened by dakcarto 11
  • Compilation problem in Debian

    Compilation problem in Debian

    Hi.

    I get this when running make in Debian 8.4, please let me know how to fix this if there's a way:

    mpic++ -g -c areadinfmn.cpp -o areadinfmn.o In file included from areadinfmn.cpp:46:0: commonLib.h:46:21: fatal error: ogr_api.h: Aucun fichier ou dossier de ce type

    include "ogr_api.h"

                    ^
    

    compilation terminated. makefile:179: recipe for target 'areadinfmn.o' failed make: *** [areadinfmn.o] Error 1

    Thank you.

    Answer 
    opened by privatemajory 9
  • Linux: stream_reach_file warning: Layer creation failed.

    Linux: stream_reach_file warning: Layer creation failed.

    StreamNet version 5.3.8 Input file stream_raster_grid.tif has geographic coordinate system. This run may take on the order of 1 minutes to complete. This estimate is very approximate. Run time is highly uncertain as it depends on the complexity of the input data and speed and memory of the computer. This estimate is based on our testing on a dual quad core Dell Xeon E5405 2.0GHz PC with 16GB RAM. Input file flow_dir_grid_d8.tif has geographic coordinate system. Input file contributing_area_grid_d8.tif has geographic coordinate system. Input file elev.tif has geographic coordinate system. Evaluating distances to outlet Creating links ERROR 10: Name was NULL in OGR_DS_CreateLayer ERROR 10: Pointer 'hLayer' is NULL in 'OGR_L_CreateField'.

    stream_reach_file warning: Layer creation failed.

    opened by snowman2 7
  • Error R6034

    Error R6034

    Dear all, I'm trying to use TauDEM before begin with other tools, as SedinConnect. I'm using arcGIS 10.2.1 over windows 10. I installed all the tools indicated in the download page, listed here: GDAL 201 for 64 bit Windows PC GDAL 2.1.0 for Python 2.7 Microsoft MPI v7.1 Microsoft Visual C++ 2015 Redistributable Package (x86) Microsoft Visual C++ 2015 Redistributable Package (x64) I installed Microsoft MPI v7.1 by running as administrator from the contextual menu. Following the advice of SedInConnect people (https://github.com/HydrogeomorphologyTools/SedInConnect_2.3/blob/master/Guidelines_tools_stand-alone.docx), I turned the UAC (User Account Control) to the lowest value to prevent Windows from blocking MPI activity. I installed TauDEM 5.3.7 by running as administrator from the contextual menu. I installed the arcGIS toolbox and tried to run pitremove from there. I obtain the error R6034: dcaptura de pantalla 2017-05-22 12 36 48

    And the ERROR 000732 in the arcGIS pit remove dialog, who cannot calculate statistics in the file I put as output. I tried to run from the command line, both by using the command prompt and my GIT bash: mpiexec -n 8 pitremove -z "./FromENVI/S36W072_73_DEM_RBB_UTM18S.tif" -fel "./FromTauDEM/RBB.tif"

    And I obtained the same error R6034.

    I don't know what to do. I'll appreciate your help, Violeta

    opened by violleTolorza 7
  • Unable to get the

    Unable to get the "correct streamlines"

    Try the below configuration:

    PitRemove.exe "WATERSHED TESTING2.tif"
    D8FlowDir.exe -p  "WATERSHED TESTING2p.tif" -sd8 "WATERSHED TESTING2sd8.tif" -fel "WATERSHED TESTING2fel.tif"
    aread8.exe -p  "WATERSHED TESTING2p.tif" -ad8 "WATERSHED TESTING2ad8.tif" -wg "WATERSHED TESTING2ss.tif"
    gridnet.exe -p "WATERSHED TESTING2p.tif" -plen "WATERSHED TESTING2plen.tif" -tlen "WATERSHED TESTING2tlen.tif" -gord "WATERSHED TESTING2gord.tif"
    peukerdouglas.exe -fel "WATERSHED TESTING2fel.tif" -ss "WATERSHED TESTING2ss.tif"
    aread8.exe  -p  "WATERSHED TESTING2p.tif" -ad8  "WATERSHED TESTING2ssa.tif" -wg " "WATERSHED TESTING2ss.tif""
    Threshold.exe -ssa "WATERSHED TESTING2ssa.tif" -src "WATERSHED TESTING2src.tif" -threshold 50
    streamnet.exe -fel  "WATERSHED TESTING2fel.tif" -p "WATERSHED TESTING2p.tif" -ad8 "WATERSHED TESTING2ad8.tif" -src "WATERSHED TESTING2src.tif" -ord "WATERSHED TESTING2ord.tif" -tree "WATERSHED TESTING2tree.dat" -coord "WATERSHED TESTING2coord.dat" -net "WATERSHED TESTING2net.shp" -w "WATERSHED TESTING2w.tif"
    

    The output is very different from what we can see on manual inspection.

    From 3D view, it seems that the streamlines mostly flow across from top left to bottom right or vice versa.

    3d flow direction

    But the output generated by TauDEM seems to indicate that the flow goes in another direction, namely, from top right to bottom left.

    withnc

    nonc

    With or without the -nc parameter, the flow directions are almost the same in TauDEM, but very different from what we can see by visual inspection.

    Changing different threshold value still doesn't change the flow directions.

    Why is it so? And how can I fix this?

    Here's the tiff file WATERSHED TESTING2.zip

    opened by WindingWinter 6
  • SetRegion.cpp fails to compile on Ubuntu

    SetRegion.cpp fails to compile on Ubuntu

    I'm trying to get TauDEM compiled on Ubuntu Xenial, and after the make, I get this error:

    [  0%] Building CXX object CMakeFiles/setregion.dir/SetRegionmn.cpp.o
    /home/vagrant/TauDEM/src/SetRegionmn.cpp: In function ‘int main(int, char**)’:
    /home/vagrant/TauDEM/src/SetRegionmn.cpp:108:1: error: jump to label ‘errexit’ [-fpermissive]
     errexit:
     ^
    /home/vagrant/TauDEM/src/SetRegionmn.cpp:55:23: note:   from here
        if(argc <= 2) goto errexit;
                           ^
    /home/vagrant/TauDEM/src/SetRegionmn.cpp:56:9: note:   crosses initialization of ‘int i’
         int i=1; 
             ^
    CMakeFiles/setregion.dir/build.make:62: recipe for target 'CMakeFiles/setregion.dir/SetRegionmn.cpp.o' failed
    make[2]: *** [CMakeFiles/setregion.dir/SetRegionmn.cpp.o] Error 1
    CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/setregion.dir/all' failed
    make[1]: *** [CMakeFiles/setregion.dir/all] Error 2
    Makefile:127: recipe for target 'all' failed
    make: *** [all] Error 2
    

    Any ideas?

    Edit: I'm using the Develop branch from git.

    opened by jgrn307 6
  • Parameters Execution Error: Runtime error Traceback

    Parameters Execution Error: Runtime error Traceback

    Hi,

    I just can't figure it out, I'm trying to use the toolbox in Arcmap, but when I put in my DEM file I get an error message saying

    "updateParameters Execution Error: Runtime error Traceback (most recent call last): File "C:\Program Files\TauDEM\TauDEM5Arc\TauDEM Tools.tbx#PitRemove.UpdateParameters.py", line 4, in File "C:\Program Files\TauDEM\TauDEM5Arc\TauDEM Tools.tbx#PitRemove.UpdateParameters.py", line 28, in updateParameters UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 21: ordinal not in range(128) "

    image

    Thank you, Liza

    opened by Lizachash 3
  • Enable streamnet not writing tree, coord, or net files

    Enable streamnet not writing tree, coord, or net files

    When specific file names are provided on streamnet command line, do not write tree, coord, or net files unless all three are given.

    These files cannot be written in parallel or directly to cloud storage, so it can be useful to omit them when writing rasters in VRT format.

    Also fix simple usage (without specific file names) net file output.

    opened by jcphill 0
  • Distribute extra rows instead of assigning to last rank

    Distribute extra rows instead of assigning to last rank

    Final rank could have up to numranks extra rows, resulting in load and memory imbalance for large parallel runs.

    Also remove broken and unused getGridXY() function.

    Based on dinf-dxdyc-fix branch due to conflicting redundant change to calling localToGlobal().

    opened by jcphill 1
  • Implement multifile VRT parallel raster output

    Implement multifile VRT parallel raster output

    Greatly improve raster output performance for large runs on parallel filesystems by writing one TIF file per rank along with a VRT file. Writing to /path/to/foldername/filename.vrt creates the directory foldername if it does not exist and writes data to files /path/to/foldername/filename.%d.tif

    No changes are needed to read VRT files.

    The VRT TIF files are written in tiled format as there is no performance penalty when writing but a dramatic performance increase when reading small areas from very wide rasters.

    opened by jcphill 0
  • Optimize D8FlowDir algorithm

    Optimize D8FlowDir algorithm

    Modify D8FlowDir algorithms to implicitly increment points in the interiors of flats that are all at the same level, and to only explicitly update points at the edges. Produces identical output but is much faster for large inputs with large flat areas.

    opened by jcphill 1
Releases(v5.3.8)
C++ library for geographical raster data analysis

Pronto Raster library The Pronto Raster Library is a C++ library to work with raster data. The core idea of the library is to make raster data accessi

Alex Hagen-Zanker 43 Oct 5, 2022
OpenOrienteering Mapper is a software for creating maps for the orienteering sport.

OpenOrienteering Mapper OpenOrienteering Mapper is an orienteering mapmaking program and provides a free and open source alternative to existing comme

null 342 Jan 8, 2023
2D and 3D map renderer using OpenGL ES

Tangram ES Tangram ES is a C++ library for rendering 2D and 3D maps from vector data using OpenGL ES. It is a counterpart to Tangram. This repository

Tangram 750 Jan 1, 2023
Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL

Mapbox GL Native A C++ library that powers customizable vector maps in native applications on multiple platforms by taking stylesheets that conform to

Mapbox 4.2k Jan 6, 2023
C++ implementation of R*-tree, an MVR-tree and a TPR-tree with C API

libspatialindex Author: Marios Hadjieleftheriou Contact: [email protected] Revision: 1.9.3 Date: 10/23/2019 See http://libspatialindex.org for full doc

null 633 Dec 28, 2022
Alternative LAZ implementation for C++ and JavaScript

What is this? Alternative LAZ implementation. It supports compilation and usage in JavaScript, usage in database contexts such as pgpointcloud and Ora

Howard Butler 55 Oct 25, 2022
Computational geometry and spatial indexing on the sphere

S2 Geometry Library Overview This is a package for manipulating geometric shapes. Unlike many geometry libraries, S2 is primarily designed to work wit

Google 1.9k Dec 31, 2022
A C++17 image representation, processing and I/O library.

Selene Selene is a C++17 image representation, processing, and I/O library, focusing on ease of use and a clean, modern, type-safe API. Overview: Brie

Michael Hofmann 286 Oct 26, 2022
A fast algorithm for finding the pole of inaccessibility of a polygon (in JavaScript and C++)

A fast algorithm for finding polygon pole of inaccessibility, the most distant internal point from the polygon outline (not to be confused with centroid), implemented as a JavaScript library. Useful for optimal placement of a text label on a polygon.

Mapbox 1.2k Jan 6, 2023
A lean, efficient, accurate geohash encoder and decoder library implemented in C

Geohash encoder/decoder in C A lean, efficient, accurate geohash encoder and decoder library implemented in C. It does not depend on the C standard li

Christopher Wellons 20 Nov 20, 2022
A library of distance and occlusion generation routines

Distance/Occlusion Library + Tool From left to right: original, signed distance with zero at 0.5, red/green SDF, delta vectors to closest boundary poi

Andrew Willmott 105 Nov 2, 2022
MDE is a model extraction tool that converts Destiny 2 dynamic models into fbx files supporting textures, skeletons, and all provided vertex data.

MDE is a model extraction tool that converts Destiny 2 dynamic models into fbx files. A dynamic model is one that is animated or is spawned in during the game.

Montague 33 Sep 2, 2022
This contains code and relevant schematics from my Applied Digital Signal Processing class, where we developed various digital filters on the NXP FRDM K22F development board.

#dsp_class Summary This repo is meant to hold any of the C and MATLAB programming I did over the course of my Applied Digital Signal Processing class

Abdullah Almosalami 1 Nov 11, 2021
16 channel R/C system for models of all kinds

A 16 channel Radio Controlled system for R/C models of all kinds. This project was started during the 2020 pandemic lockdown (thus the title), and has since grown out of passion & enthusiasm.

Malcolm Messiter 9 Dec 14, 2022
Perimeter is a real-time strategy video game with unique gameplay elements such as terraforming deformable terrain, morphing units, energy network, protective shield and surreal worlds.

Периметр | Perimeter About Perimeter is a real-time strategy video game with unique gameplay elements such as terraforming deformable terrain, morphin

null 414 Dec 27, 2022
Windows Elevation

What's this This project is mainly used to collect the commonly used exp of Windows platform and give the relevant repair scheme. On the one hand, it

Al1ex 503 Dec 28, 2022
PoC (DoS) for CVE-2021-40449 - Win32k Elevation of Privilege Vulnerability (LPE)

CallbackHell DoS PoC for CVE-2021-40449 (Win32k - LPE) CallbackHell Description Technical Writeup PoC References Description CVE-2021-40449 is a use-a

Oliver Lyak 437 Dec 31, 2022
Exploit for CVE-2021-40449 - Win32k Elevation of Privilege Vulnerability (LPE)

CallbackHell Exploit for CVE-2021-40449 (Win32k - LPE) CallbackHell Description Technical Writeup PoC References Description CVE-2021-40449 is a use-a

Oliver Lyak 437 Dec 31, 2022
A software C library designed to extract data attributes from network packets, server logs, and from structured events in general, in order to make them available for analysis

MMT-DPI A software C library desinged to extract data attributes from network packets, server logs, and from structured events in general, in odrder t

Montimage 3 Nov 9, 2022
Probabilistic Risk Analysis Tool (fault tree analysis, event tree analysis, etc.)

SCRAM SCRAM is a Command-line Risk Analysis Multi-tool. This project aims to build a command line tool for probabilistic risk analysis. SCRAM is capab

Olzhas Rakhimov 115 Dec 30, 2022