Package: timezonefinderL
timezonefinderL is the faster and lightweight, but inaccurate version of the originaltimezonefinder.
Use this package in favour oftimezonefinderwhen memory usage and speed matter more to you than accuracy.Only the functiontimezone_at()is being supported andnumbacannot be used for precompilation.
The commands need to modified:pip install timezonefinderLfromtimezonefinderLimportTimezoneFindertf=TimezoneFinder()longitude,latitude=13.358,52.5061tf.timezone_at(lng=longitude,lat=latitude)# returns 'Europe/Berlin'For everything else please refer to the originalDocumentation.Operating PrincipleInstead of storing timezone polygons and checking which polygon a query point is included in, like with the vanillatimezonefinder,
this package uses only the precomputed shortcuts to instantly lookup a timezone.
The zone which has the highest amount of timezone polygons (not covered surface!) in a shortcut is instantly being returned.This requires far less memory and computing time, but of course is not accurate close to the borders of two neighbouring timezones.The size of the shortcuts (<-> accuracy) is equal to the one used in the vanillatimezonefinder(1 shortcut per degree longitude, 2 per degree latitude, 260KB binary file size).
In order to increase the accuracy (more and smaller shortcut rectangles), increment the parametersNR_SHORTCUTS_PER_LNGandNR_SHORTCUTS_PER_LATinglobal_settings.pyand compile a new binary shortcut file by runningfile_converter.py.Speed Test Results:obtained on MacBook Pro (15-inch, 2017), 2,8 GHz Intel Core i7
It can be seen thattimezonefinderLis roughly one order of magnitude faster thantimezonefinder:Speed Tests:
-------------
"realistic points": points included in a timezone

in memory mode: False

testing 100000 realistic points
total time: 0.5513s
avg. points per second: 1.8 * 10^5

testing 100000 random points
total time: 0.5682s
avg. points per second: 1.8 * 10^5


in memory mode: True

testing 100000 realistic points
total time: 0.1688s
avg. points per second: 5.9 * 10^5


testing 100000 random points
total time: 0.1837s
avg. points per second: 5.4 * 10^5ContactMost certainly there is stuff I missed, things I could have optimized even further etc. I would be really glad to get some feedback on my code.If you notice that the tz data is outdated, encounter any bugs, have
suggestions, criticism, etc. feel free toopen an Issue,add a Pull Requestson Git or …contact me:[python] {-at-} [michelfe] {-*dot-} [it]*Licensetimezonefinderis distributed under the terms of the MIT license
(see LICENSE.txt).Also see:GitHub,PyPI,GUI and APIof the outdatedtimezonefinderLtimezonefinder,Changelog4.0.2 (2019-05-23)MAJOR UPDATE: only the functiontimezone_at()is being supportednot based on the simplification of the timezone polygons any more (not easily achievable with the new boundary data set)use the precomputed shortcuts to instantly look up a timezone (“instant shortcut”, most common zone of the polygons within that shortcut)updated the code to the status of the currenttimezonefindermain packagev4.0.2data in use now istimezone-boundary-builder 2019adescribed options for increasing the accuracy in readmedropped python2 support2.0.1 (2017-04-08)added missing package data entries (2.0.0 didn’t include all necessary .bin files)2.0.0 (2017-04-07)introduction of this version oftimezonefinderdata has been simplified which affects speed and data size. Around 56% of the coordinates of the timezone polygons have been deleted and around 60% of the polygons (mostly small islands) have been included in the simplified polygons. For any coordinate on landmass the results should stay the same, but accuracy at the shorelines is lost. This eradicates the usefulness of closest_timezone_at() and certain_timezone_at() but the main use case for this package (= determining the timezone of a point on landmass) is improved.file_converter.py has been complemented and modified to perform those simplificationsintroduction of new function get_geometry() for querying timezones for their geometric shapeadded shortcuts_unique_id.bin for instantly returning an id if the shortcut corresponding to the coords only contains polygons of one zonedata is now stored in separate binaries for ease of debugging and readabilitypolygons are stored sorted after their timezone id and sizetimezonefinder can now be called directly as a script (experimental with reduced functionality, see readme)optimisations on point in polygon algorithmsmall simplifications in the helper functionsclarification of the readmeclarification of the comments in the codereferenced the new conda-feedstock in the readmereferenced the new timezonefinder API/GUIfor older versions refer totimezonefinder.