@geonet/geohash
v1.0.16
Published
Geohash decode/encoder
Downloads
2,815
Readme
@geonet/geohash
Geohash decode/encoder
| Precision | Width | Height |
|:---------:|:-----------:|:-----------:|
| 1 | ≤ 5,000km
| × 5,000km
|
| 2 | ≤ 1,250km
| × 625km
|
| 3 | ≤ 156km
| × 156km
|
| 4 | ≤ 39.1km
| × 19.5km
|
| 5 | ≤ 4.89km
| × 4.89km
|
| 6 | ≤ 1.22km
| × 0.61km
|
| 7 | ≤ 153m
| × 153m
|
| 8 | ≤ 38.2m
| × 19.1m
|
| 9 | ≤ 4.77m
| × 4.77m
|
| 10 | ≤ 1.19m
| × 0.596m
|
| 11 | ≤ 149mm
| × 149mm
|
| 12 | ≤ 37.2mm
| × 18.6mm
|
Installation
npm i @geonet/geohash
Deployment
npm run lint
npm run test
rm -rf docs/ && npm run docs
npm run build
np
Usage
Basic usage:
const Geohash = require( '@geonet/geohash' );
const hash = Geohash.encode( -77.480, 38.866, 7 ); // hash: 'dqbvhgk'
encode
Encodes longitude/latitude to geohash, either to specified precision or to automatically evaluated precision.
params
lng
{number} Longitude in degrees.lat
{number} Latitude in degrees.precision
{number} Number of characters in resulting geohash.
returns: Geohash of supplied longitude/latitude.
const hash = Geohash.encode( -77.480, 38.866, 7 ); // hash: 'dqbvhgk'
decode
Decode geohash to longitude/latitude (location is approximate center of geohash cell, to reasonable precision).
params
geohash
{string} Geohash string to be converted to longitude/latitude.
returns: (Center of) geohashed location.
const latlng = Geohash.decode( 'dqbvhgk' ); // latlng: { lng: -77.4804, lat: 38.8662 }
neighbors
Returns 8 adjacent cells to specified geohash.
params
geohash
{string} Geohash to find neighbors of.asObject
{boolean} return geohashes in an object ({c,n,ne,e,se,s,sw,w,nw}
)
returns: surrounding geohashes
const latlng = Geohash.neighbors( 'dqcjpxetzh6q' );
[
'dqcjpxetzh6r', 'dqcjpxetzh6x', 'dqcjpxetzh6w', 'dqcjpxetzh6t',
'dqcjpxetzh6m', 'dqcjpxetzh6j', 'dqcjpxetzh6n', 'dqcjpxetzh6p'
]
Example:
Geohash.neighbors( 'dqcjpxetzh6q' );
┬────────────────────────────────────────────────────┐
│ 'west' 'center' 'east' │
┼──────────┼────────────────────────────────────────────────────┤
│ 'north' │ 'dqcjpxetzh6p' 'dqcjpxetzh6r' 'dqcjpxetzh6x' │
│ 'center' │ 'dqcjpxetzh6n' 'dqcjpxetzh6q' 'dqcjpxetzh6w' │
│ 'south' │ 'dqcjpxetzh6j' 'dqcjpxetzh6m' 'dqcjpxetzh6t' │
┴──────────┴────────────────────────────────────────────────────┘
GeohashStream
GeohashStream
takes in a BBox and streams geohashes within that bbox.
params
minLng
{number} bbox min longitudeminLat
{number} bbox min latitudemaxLng
{number} bbox max longitudemaxLat
{number} bbox max latitudeprecision
{number=7} geohash precision (defaults to 7)
new Geohash.GeohashStream( 0.1, 52.2, 0.2, 52.3, 3 )
.on( 'data', d => console.log( d.toString() ) )
.on( 'end', () => console.log( 'done' ) );
// u12
GeohashStreamGeoJSON
GeohashStreamGeoJSON
is the same as GeohashStream
but streams back GeoJSON
params
minLng
{number} bbox min longitudeminLat
{number} bbox min latitudemaxLng
{number} bbox max longitudemaxLat
{number} bbox max latitudeprecision
{number=7} geohash precision (defaults to 7)
new Geohash.GeohashStreamGeoJSON( 0.1, 52.2, 0.2, 52.3, 3 )
.on( 'data', d => console.log( d.toString() ) )
.on( 'end', () => console.log( 'done' ) );
// {
// "type": "Feature",
// "bbox": [ 0, 52.03125, 1.40625, 53.4375 ],
// "properties": {},
// "geometry": {
// "type": "Polygon",
// "coordinates": [ [
// [ 0, 52.03125 ],
// [ 1.40625, 52.03125 ],
// [ 1.40625, 53.4375 ],
// [ 0, 53.4375 ],
// [ 0, 52.03125 ]
// ] ]
// }
// }