Need help with DEM.Net?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Global Rank
#109,042
Topics of expertise
heightm...
srtm
gpx
Game Ja...
game-pr...
elevati...
framewo...
geotool...
Location
Aix-en-Provence, France
191 Stars 32 Forks Other 1.0K Commits 6 Opened issues

Description

Digital Elevation model library in C#. 3D terrain models, line/point Elevations, intervisibility reports

Services available

!
?

Need anything else?

Contributors list

# 109,042
heightm...
srtm
Visual ...
F#
823 commits
# 457,984
C#
heightm...
gpx
47 commits
# 675,123
C#
heightm...
srtm
4 commits
# 56,410
Clojure...
xss-det...
cloudfl...
sha512
1 commit

xscode Build Status Board Status Maintenance Twitter Follow

DEM.Net.Core NuGet Version

DEM.Net.glTF NuGet Version

This library is licensed for personal use or for smal companies generating less than $100,000 annually, for any other cases, please get in touch with us.

DEM.Net

Digital Elevation Model library in C# - Elevation queries (point, polylines, heightmap, GPX) - 3D export (glTF, STL) - Imagery (MapBox, OSM, Stamen) : textured 3D models and normal maps - No setup - Automatic DEM file download from openTopography.org - Fast and optimized queries

See samples here

Supported by JetBrainSupport

3D model

Supported formats and datasets

Input

  • GeoTIFF (JAXA AW3D, and any GeoTIFF)
  • HGT (Nasa SRTM)
  • netCDF ## Output
  • glTF
  • STL

Current dev status

  • All incoming features are listed in the project board here : https://dev.azure.com/dem-net/elevationapi/_workitems/recentlyupdated/.
  • Feel free to suggest any idea you'd like to see covered here in the issues : https://github.com/dem-net/DEM.Net/issues.

SampleApp

(Work in progress) SampleApp is a Console App used for test purposes, full of samples. It's pretty messy and lacks documentation but names are self explanatory.

How do I use the API ?

Raster operations

  • Use
    elevationService.DownloadMissingFiles(DEMDataSet.AW3D30, )
    to download and generate metadata for a given dataset.
  • Supported datasets : SRTM GL1 and GL3 (HGT files), AWD30 (GeoTIFF)
  • Use
    new RasterService().GenerateReport(DEMDataSet.AW3D30, )
    to download only necessary tiles using remote VRT file.
  • Use
    rasterService.GenerateFileMetadata(, DEMFileFormat.GEOTIFF, false, false)
    to generate metada for an arbitrary file.
  • Use
    RasterService.GenerateDirectoryMetadata(samplePath);
    to generate metadata files for your raster tiles. These metadata files will be used as an index when querying Digital Elevation Model data.

Elevation operations

  • GetLineGeometryElevation
  • GetPointElevation

glTF export

  • glTFService
    can generate triangulated MeshPrimitives from height maps
  • Export to .gtlf or .glb

Sample data

  • Rasters from http://www.opentopography.org Dataset used is "ALOS World 3D - 30m" : http://opentopo.sdsc.edu/lidar?format=sd&platform=Satellite%20Data&collector=JAXA For development and tests, files covering France were used.
  • Not used yet but worth mentionning : For sea bed elevation : ETOPO1 Global Relief Model https://www.ngdc.noaa.gov/mgg/global/global.html

Acknowledgements / Sources

  • https://github.com/stefangordon/GeoTiffSharp from @stefangordon which provided a good starting point.
  • Pedro Sousa : http://build-failed.blogspot.fr/2014/12/processing-geotiff-files-in-net-without.html for good explanations.
  • Mathieu Leplatre for http://blog.mathieu-leplatre.info/drape-lines-on-a-dem-with-postgis.html
  • Andy9FromSpace : HGT file reader in https://github.com/Andy9FromSpace/map-elevation

Third party code and librairies

  • glTF : glTF2Loader and AssetGenerator : https://github.com/KhronosGroup/glTF
  • Tiff support : https://github.com/BitMiracle/libtiff.net
  • Serialization : https://github.com/neuecc/ZeroFormatter and https://github.com/JamesNK/Newtonsoft.Json
  • System.Numerics.Vectors for Vector support
  • GPX reader from dlg.krakow.pl

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.