Query hgt files (typically SRTM elevation data) with performance
Branch: master
Clone or download
perliedman Merge pull request #27 from alexkavon/missing-file-error
Check if tempPath Exists Before Unlinking
Latest commit 8974c41 Feb 14, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src check if the file exists before unlinking Feb 12, 2019
test Add multiple downloads test Jan 26, 2018
.gitignore
.travis.yml Update to node 10 in .travis.yml May 7, 2018
LICENSE.md add title and extension to license file Jul 5, 2016
README.md README.md had bad trailing code in SyncTileSet example Feb 12, 2019
package-lock.json Upgrade tap-spec Aug 31, 2018
package.json

README.md

node-hgt

Greenkeeper badge

npm version Build status

Read and query HGT files, for example from SRTM, for elevation data with high performance. Optionally, this module can also use cached and automatically download HGT files as required.

node-hgt tries to be reasonably performant. A rough benchmark shows it can do 1.8M elevation calculations per second on my years old laptop.

Install

npm install --save node-hgt

Usage

Load and query a HGT file:

    var hgt = new Hgt(__dirname + '/data/N57E011.hgt', [57, 11]);
    
    // Return elevation in meters above sea level.
    // By default, elevation is interpolated bilinearly.
    hgt.getElevation([57, 11])

Use a cache directory of HGT files for querying. Missing data will be downloaded using the elevation data index from imagico.de, by default.

    var tileset = new TileSet('./data/');
    tileset.getElevation([57.7, 11.9], function(err, elevation) {
        if (err) {
            console.log('getElevation failed: ' + err.message);
        } else {
            console.log(elevation);
        }
    });

There's also a synchronous tile set, if you know before hand which area you will query:

    var tileset = new SyncTileSet('./data/', [57, 11], [58, 12], function(err) {
        if (err) {
            console.log(err);
            return;
        }

        // All tiles are loaded (or downloaded, if they were not already on disk)
        // and queries can be made synchronous.

        var elevation = tileset.getElevation([57.7, 11.9]);
        console.log(elevation);
    });