https://github.com/albertyw/localtimezone
Go latlong to timezone
https://github.com/albertyw/localtimezone
geospatial golang openstreetmap timezone tzdata
Last synced: 2 months ago
JSON representation
Go latlong to timezone
- Host: GitHub
- URL: https://github.com/albertyw/localtimezone
- Owner: albertyw
- License: mit
- Created: 2022-09-05T21:00:23.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-03-06T05:50:27.000Z (2 months ago)
- Last Synced: 2025-03-17T20:03:08.989Z (2 months ago)
- Topics: geospatial, golang, openstreetmap, timezone, tzdata
- Language: Go
- Homepage:
- Size: 161 MB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# github.com/albertyw/localtimezone
[](https://drone.albertyw.com/albertyw/localtimezone)
[](https://pkg.go.dev/github.com/albertyw/localtimezone/v3)
[](https://goreportcard.com/report/github.com/albertyw/localtimezone/v3)
[](https://codeclimate.com/github/albertyw/localtimezone/maintainability)
[](https://codeclimate.com/github/albertyw/localtimezone/test_coverage)
[](https://opensource.org/licenses/MIT)LatLong conversion to time zone.
This is a fork of [github.com/ugjka/go-tz](https://github.com/ugjka/go-tz).## Usage / Example
```go
import localtimezone "github.com/albertyw/localtimezone/v3"// Loading Zone for Line Islands, Kiritimati
tz, err := localtimezone.NewLocalTimeZone()
if err != nil {
panic(err)
}
zone, err := tz.GetZone(localtimezone.Point{
Lon: -157.21328, Lat: 1.74294,
})
if err != nil {
panic(err)
}
fmt.Println(zone[0])
```Uses simplified shapefile from [timezone-boundary-builder](https://github.com/evansiroky/timezone-boundary-builder/)
GeoJson Simplification done with [orb](https://github.com/paulmach/orb).
## Features
- The timezone shapefile is embedded in the build binary
- Supports overlapping zones
- You can load your own geojson shapefile if you want
- Sub millisecond lookup even on old hardware## Problems
- Shapefile is simplified using a lossy method so it may be innacurate along the borders
- This is purely in-memory. Uses ~50MB of ram## Updating data
Get the most current timezone release version at https://github.com/evansiroky/timezone-boundary-builder/tags```bash
go run tzshapefilegen/main.go
```## Licenses
The code used to lookup the timezone for a location is licensed under the [MIT License](https://opensource.org/licenses/MIT).
The data in timezone shapefile is licensed under the [Open Data Commons Open Database License (ODbL)](https://opendatacommons.org/licenses/odbl/).