#grid #reference #national #string-parser #coordinate #precision #osi

gridish

Library for working with British and Irish national grid strings

5 releases (2 stable)

1.0.1 Aug 28, 2024
0.1.2 Apr 22, 2024
0.1.1 Apr 3, 2024
0.1.0 Mar 27, 2024

#457 in Algorithms

Download history 13/week @ 2024-07-24 234/week @ 2024-08-28 17/week @ 2024-09-11 13/week @ 2024-09-18 12/week @ 2024-09-25 6/week @ 2024-10-02

197 downloads per month

MIT/Apache

55KB
1K SLoC

gridish

CI Pipeline Status

A rust library for working with British and Irish national grids (OSGB, and OSI). Provides a simple interface for converting valid grid references into eastings / northings and vice versa, as well as functionality to recalculate a grid reference to a new precision. This crate intentionally does not provide functionality to convert between different coordinate systems, as there are already several libraries available to do this; it exists solely to fill the gap between numerical coordinates in eastings / northings and their textual representations.

Examples

use gridish::{OSGB, Precision};
use geo_types::coord;

// Parse grid reference from a 6 figure (100m) string.
let gridref_100m: OSGB = "SO892437".parse().unwrap();

// Recalculate grid reference to 2 figures (10km)
let gridref_10k = gridref_100m.recalculate(Precision::_10Km);
assert_eq!("SO84".to_string(), gridref_10k.to_string());

// Get the eastings / northings at the gridref's south west corner
assert_eq!(gridref.sw(), coord! {x: 389_200.0, y: 243_700.0 }.into());

Features

  • serde: Provides support for (de)serialization using serde.
  • tetrads: Provides support for tetrad grid references in the DINTY format, as commonly used in biological surveys.
use gridish::{OSGB, Precision};
use geo_types::coord;

// Parse grid reference from a DINTY (2km) string.
let gridref_2k: OSGB = "SN24R".parse().unwrap();

// Get the eastings / northings at the gridref's south west corner
assert_eq!(gridref_2k.sw(), coord! {x: 226_000.0, y: 242_000.0 }.into());

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.

Dependencies

~0.7–0.9MB
~18K SLoC