zverok / Wheretz
Licence: mit
Fast and precise time zone by geo coordinates lookup
Stars: ✭ 88
Programming Languages
ruby
36898 projects - #4 most used programming language
WhereTZ: fast and precise timezone lookup
WhereTZ is a small gem for lookup of timezone by georgraphic coordinates.
Features:
- quite precise: uses timezone-boundary-builder, which takes source data from OpenStreetMap;
- (relatively) fast: 0.1-0.2 sec for lookup in worst cases and almost immediate lookup for best cases;
- no calls to external services, works without Internet connection;
- no keeping some 50 Mb datafiles in memory or reading them from disk for each call;
- can return timezone name string or
TZInfo::Timezone
.
Usage
Install it with your usual routines (Gemfile or gem install
) as wheretz
gem. Then:
require 'wheretz'
WhereTZ.lookup(50.004444, 36.231389) # (lat, lng) order
# => 'Europe/Kiev'
WhereTZ.get(50.004444, 36.231389)
# => #<TZInfo::DataTimezone: Europe/Kiev>
# you should have tzinfo gem installed, wheretz doesn't list it as dependency
From command-line, after gem installed:
wheretz 50.004444,36.231389
# => Europe/Kiev
How it works
- Latest version of timezone-boundary-builder dataset is converted into ~400
data/*.geojson
files; - Each of those files corresponds to one timezone; filename contains timezone name and bounding box (min and max latitude and longitude);
- On each lookup
WhereTZ
first checks provided coordinates by bounding boxes, and if only one bbox (extracted from filename) corresponds to them, returns timezone name immediately; - If there's several intersecting bounding boxes,
WhereTZ
reads only relevant timezone files (which are not very large) and checks which polygon actually contains the point.
Known problems
- Loading/unloading
.geojson
files can be uneffective when called multiple times; future releases will provide option for preserve data in memory, or for mass lookup of points; - You should note that gem has ≈50 MiB of datafiles inside;
- Data conversion performed by pretty ugly script (instead of Rake task as it should be).
Author
License
Data license is ODbL.
Code license is usual MIT.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].