UA3MQJ / wheretz

Time zone by geo coordinates lookup

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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:

  • no calls to external services, works without Internet connection;
  • Timezone result is %Timex.TimezoneInfo

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

  • Not work with new format of geo data 2023

Author

Alexey Bolshakov

Thanks to

Victor Shepelev

License

Data license is ODbL.

Code license is usual MIT.

About

Time zone by geo coordinates lookup

License:MIT License


Languages

Language:Elixir 100.0%