Skip to content

Retrieve timezone data via latitude / longitude, offline.

License

Notifications You must be signed in to change notification settings

moranbw/spatialtime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spatialtime

Crates.io Version Documentation License:MIT

A Rust library to lookup timezone data based on longitude and latitude. Only focused on the offline environment, in which the system clock cannot be trusted at all (thus, no DST adjustments). Uses the Natural Earth (NED) and OpenStreetMap (OSM) datasets, pre-processed into flatgeobufs for indexed queries.

Inspo

The idea and some conventions are heavily influenced by rtz, which is an awesome library that is probably fine for most people. At the time of writing, however, it only worked with nightly Rust. So I have gone forward with this much simpler implementation for stable Rust, that fits the specific use-case I am trying to solve.

Install

# use NED
spatialtime = { version = "0.2", features = ["ned"] }
# use OSM
spatialtime = { version = "0.2", features = ["osm"] }

Usage

let response = spatialtime::osm::lookup(-77.0365, 38.8977).unwrap();
/***
 *  OSM dataset does not include offset, just tzid
 *  OsmResponse { tzid: "America/New_York" }
 ***/
let response = spatialtime::ned::lookup(149.1165, -35.3108).unwrap();
/***
 *  NED dataset will always contain offset, but might not have a tzid
 *  NedResponse { offset: 10.0, tzid: Some("Australia/Sydney") }
 ***/

OSM or NED?

OSM dataset is much larger, coming in at 17.9MB. NED is 890KB. OSM may be more "accurate" and more "up-to-date", but which one you use is likely case-by-case.

Data Sources

Note

If developing / running / building from a musl environment (like Alpine), you may need to set RUSTFLAGS="-Ctarget-feature=-crt-static". This only seems necessary for build-assets at this time. More info here: https://rust-lang.github.io/rfcs/1721-crt-static.html

About

Retrieve timezone data via latitude / longitude, offline.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages