#geohash #gis #geography

substrate-geohash

Geohash implementation for Rust. Forked for use with substrate

1 unstable release

0.13.0 Oct 25, 2023

#9 in #geohash

Download history 380/week @ 2024-04-04 210/week @ 2024-04-11 473/week @ 2024-04-18 260/week @ 2024-04-25 225/week @ 2024-05-02 153/week @ 2024-05-09 581/week @ 2024-05-16 332/week @ 2024-05-23 284/week @ 2024-05-30 690/week @ 2024-06-06 320/week @ 2024-06-13 519/week @ 2024-06-20 568/week @ 2024-06-27 179/week @ 2024-07-04 721/week @ 2024-07-11 360/week @ 2024-07-18

2,017 downloads per month
Used in 20 crates (via encointer-primitives)

MIT/Apache

17KB
267 lines

crates.io

Rust-Geohash for Substrate

This is a fork which derives SCALE codec info for use with parity substrate

Rust-Geohash is a Rust library for Geohash algorithm. Ported from node-geohash module.

Documentation

Docs

Check the API doc at docs.rs

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

Geohash

Geohash algorithm implementation in Rust. It encodes/decodes a longitude-latitude tuple into/from a hashed string. You can find more about geohash algorithm on Wikipedia

Usage

extern crate geohash;

use fixed::types::I64F64;

fn main() -> Result<(), Box<geohash::GeohashError>> {
use std::convert::TryFrom;
use geohash::{GeoHash, Direction};
let lon = I64F64::from_num(112.5584);
  let lat = I64F64::from_num(37.8324f64);

  // decode a geohash
  let (lon, lat, _, _) = GeoHash::<9>::try_from("ww8p1r4t8")?.try_as_coordinates()?;

  // find a neighboring hash
  let sw = GeoHash::<9>::try_from("ww8p1r4t8")?.neighbor(Direction::SW)?;

  Ok(())
}

Dependencies

~4MB
~87K SLoC