Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/perliedman/node-hgt

Query hgt files (typically SRTM elevation data) with performance
https://github.com/perliedman/node-hgt

Last synced: 4 months ago
JSON representation

Query hgt files (typically SRTM elevation data) with performance

Awesome Lists containing this project

README

        

node-hgt
========

[![Greenkeeper badge](https://badges.greenkeeper.io/perliedman/node-hgt.svg)](https://greenkeeper.io/)

[![npm version](https://img.shields.io/npm/v/node-hgt.svg)](https://www.npmjs.com/package/node-hgt) [![Build status](https://travis-ci.org/perliedman/node-hgt.svg?branch=master)](https://travis-ci.org/perliedman/node-hgt)

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:

```js
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](http://www.imagico.de/map/demsearch.php),
by default.

```js
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:

```js
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);
});
```