Skip to content

leon-win/geohex

Repository files navigation

Geohex

npm Code style: Prettier License: MIT

Hexagonal geocoding system, library for converting geographic coordinates to hexagonal grid cells and vice versa.

This is ECMAScript 2015 fork of GeoHex library which was originally made by @sa2da.

Installation

npm install geohex --save

Or grab from jsDelivr CDN:

<script src="https://cdn.jsdelivr.net/npm/geohex@0.0.7/lib/geohex.min.js"></script>

Or from unpkg CDN:

<script src="https://unpkg.com/geohex@0.0.7/lib/geohex.min.js"></script>

Usage

ES6 Modules

import Geohex from "geohex";
// or import { getCellByCode } from 'geohex'

CommonJS

const Geohex = require("geohex");
// or const { getCellByCode } = require('geohex')

JS modules:

<script type="module">
  import Geohex from "geohex/src/index.js";
  // or import { getCellByCode } from 'geohex/src/index.js'
</script>

Global variable

<script src="geohex/lib/geohex.min.js"></script>

Examples

Online demo of Geohex usage

// Get Geohex cell instance by code
const geohexCell = Geohex.getCellByCode('QH3360')

// Get Geohex cell instance by geographic coordinates and zoom level
const geohexCell = Geohex.getCellByLocation(59.943201, 30.324086, 4)

// Get Geohex cell instance by cell coordinates and zoomLevel
const geohexCell = Geohex.getCellByXY(326, 203, 4)

// Get Geohex cell coordinates by geographic coordinates and zoom level
Geohex.getXYByLocation(59.943201, 30.324086, 4):
// { x: 326, y: 203 }

// Get Geohex cell coordinates by code
Geohex.getXYByCode('QH3360')
// { x: 326, y: 203 }

Geohex cell instance

Geohex cell instance is hexagon grid cell with properties and methods:

console.log(JSON.stringify(geohexCell, null, 2))
// {
//   "lat": 59.97788999458348,
//   "lon": 30.37037037037038,
//   "x": 326,
//   "y": 203,
//   "code": "QH3360"
// }

// Cell zoom level
geohexCell.getZoomLevel()
// 4

// Cell side length in degrees
geohexCell.getHexSize():
// 9162.098006401464

// Geographic coordinates of hexagon corners
geohexCell.getHexCoords():
// [
//   { lat: 59.97788999458348, lon: 30.205761316872437 },
//   { lat: 60.0491386517641, lon: 30.288065843621407 },
//   { lat: 60.0491386517641, lon: 30.45267489711935 },
//   { lat: 59.97788999458348, lon: 30.53497942386832 },
//   { lat: 59.90648768479527, lon: 30.45267489711935 },
//   { lat: 59.90648768479527, lon: 30.288065843621407 }
// ]

Other implementations

License

MIT

© 2009 @sa2da (http://twitter.com/sa2da) http://www.geohex.org

© 2020 Leonid Vinogradov