Home

Awesome

WhereTZ: timezone lookup

License Hex.pm Version Coverage Status Inline docs

WARNING

Not work in 2023 :(

WhereTZ is elixir version of Ruby gem for lookup of timezone by georgraphic coordinates.

https://github.com/zverok/wheretz

Features:

Usage

Add to project from hex.pm

def deps do
  [
    {:wheretz, "~> 0.1.16"},
  ]
end

or from github

def deps do
  [
    {:wheretz, git: "git@github.com:UA3MQJ/wheretz.git", tag: "v0.1.16"},
  ]
end

Before the first start, you need to download the geo database.

mix download_data

usage

iex(1)> WhereTZ.get(50.004444, 36.231389)   
#<TimezoneInfo(Europe/Kiev - EET (+02:00:00))>
iex(2)> WhereTZ.lookup(50.004444, 36.231389)  
"Europe/Kiev"

How it works

  1. Latest version of timezone-boundary-builder dataset is converted into mnesia table (125Mb);
  2. For each time zone, store timezone name, geo polygon and calculate bounding box (min and max latitude and longitude);
  3. On each lookup WhereTZ first checks provided coordinates by bounding boxes, and if only one bbox, corresponds to them, returns timezone name immediately;
  4. If there's several intersecting bounding boxes, WhereTZ checks which polygon actually contains the point.

Known problems

Author

Alexey Bolshakov

Thanks to

Victor Shepelev

License

Data license is ODbL.

Code license is usual MIT.