#approximation #distance #geodesic #projection #flat #system #calculations

flat_projection

Fast geodesic distance approximations via flat surface projection

5 releases (3 breaking)

Uses old Rust 2015

0.4.0 Sep 14, 2020
0.3.0 Sep 20, 2019
0.2.0 Apr 12, 2018
0.1.1 Jan 28, 2018
0.1.0 Jan 28, 2018

#130 in Geospatial

Download history 141/week @ 2023-12-26 21/week @ 2024-01-02 16/week @ 2024-01-09 22/week @ 2024-01-16 1/week @ 2024-01-23 17/week @ 2024-01-30 29/week @ 2024-02-06 55/week @ 2024-02-13 22/week @ 2024-02-20 71/week @ 2024-02-27 23/week @ 2024-03-05 148/week @ 2024-03-12 53/week @ 2024-03-19 25/week @ 2024-03-26 47/week @ 2024-04-02 11/week @ 2024-04-09

153 downloads per month

MIT license

18KB
131 lines

flat-projection

Build Status

Fast geodesic distance approximations via flat surface projection

The FlatProjection struct can by used to project geographical coordinates from WGS84 into a cartesian coordinate system. In the projected form approximated distance and bearing calculations can be performed much faster than on a sphere. The precision of these calculations is very precise for distances up to about 500 km.

Usage

extern crate flat_projection;

use flat_projection::FlatProjection;

fn main() {
    let (lon1, lat1) = (6.186389, 50.823194);
    let (lon2, lat2) = (6.953333, 51.301389);

    let proj = FlatProjection::new(51.05);

    let p1 = proj.project(lon1, lat1);
    let p2 = proj.project(lon2, lat2);

    let distance = p1.distance(&p2);
    // -> 75.648 km
}

Benchmark

$ cargo bench

distance/flat           time:   [322.21 ps 323.82 ps 326.41 ps]
distance/haversine      time:   [12.604 ns 12.831 ns 13.162 ns]
distance/vincenty       time:   [346.79 ns 348.00 ns 349.61 ns]

According to these results the flat surface approximation is about 40x faster than the Haversine formula.

License

This project is released under the MIT license.

Dependencies

~155KB