Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mmcloughlin/geohash
Golang geohash library
https://github.com/mmcloughlin/geohash
geohash go golang
Last synced: 4 days ago
JSON representation
Golang geohash library
- Host: GitHub
- URL: https://github.com/mmcloughlin/geohash
- Owner: mmcloughlin
- License: mit
- Created: 2015-07-10T21:21:20.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-02-09T19:20:56.000Z (12 months ago)
- Last Synced: 2025-01-17T23:08:41.228Z (11 days ago)
- Topics: geohash, go, golang
- Language: Go
- Homepage: https://pkg.go.dev/github.com/mmcloughlin/geohash
- Size: 388 KB
- Stars: 540
- Watchers: 15
- Forks: 46
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# geohash
Go [geohash](https://en.wikipedia.org/wiki/Geohash) library offering encoding
and decoding for string and integer geohashes.[![go.dev Reference](https://img.shields.io/badge/doc-reference-007d9b?logo=go&style=flat-square)](https://pkg.go.dev/github.com/mmcloughlin/geohash)
![Build status](https://img.shields.io/github/actions/workflow/status/mmcloughlin/geohash/ci.yml?style=flat-square)
[![Coverage](https://img.shields.io/codecov/c/github/mmcloughlin/geohash?style=flat-square)](https://codecov.io/github/mmcloughlin/geohash)
[![Go Report Card](https://goreportcard.com/badge/github.com/mmcloughlin/geohash?style=flat-square)](https://goreportcard.com/report/github.com/mmcloughlin/geohash)## Install
Fetch the package with
```
go get github.com/mmcloughlin/geohash
```And import it into your programs with
```go
import "github.com/mmcloughlin/geohash"
```## Usage
#### func ConvertIntToString
```go
func ConvertIntToString(hash uint64, chars uint) string
```
ConvertIntToString converts an integer geohash to the equivalent string geohash
with chars characters. The provided integer geohash is interpreted to have
5*chars bits of precision.#### func ConvertStringToInt
```go
func ConvertStringToInt(hash string) (uint64, uint)
```
ConvertStringToInt converts a string geohash to the equivalent integer geohash.
Returns the integer hash and its precision.#### func Decode
```go
func Decode(hash string) (lat, lng float64)
```
Decode the string geohash to a (lat, lng) point.#### func DecodeCenter
```go
func DecodeCenter(hash string) (lat, lng float64)
```
DecodeCenter decodes the string geohash to the central point of the bounding
box.#### func DecodeInt
```go
func DecodeInt(hash uint64) (lat, lng float64)
```
DecodeInt decodes the provided 64-bit integer geohash to a (lat, lng) point.#### func DecodeIntWithPrecision
```go
func DecodeIntWithPrecision(hash uint64, bits uint) (lat, lng float64)
```
DecodeIntWithPrecision decodes the provided integer geohash with bits of
precision to a (lat, lng) point.#### func Encode
```go
func Encode(lat, lng float64) string
```
Encode the point (lat, lng) as a string geohash with the standard 12 characters
of precision.#### func EncodeInt
```go
func EncodeInt(lat, lng float64) uint64
```
EncodeInt encodes the point (lat, lng) to a 64-bit integer geohash.#### func EncodeIntWithPrecision
```go
func EncodeIntWithPrecision(lat, lng float64, bits uint) uint64
```
EncodeIntWithPrecision encodes the point (lat, lng) to an integer with the
specified number of bits.#### func EncodeWithPrecision
```go
func EncodeWithPrecision(lat, lng float64, chars uint) string
```
EncodeWithPrecision encodes the point (lat, lng) as a string geohash with the
specified number of characters of precision (max 12).#### func Neighbor
```go
func Neighbor(hash string, direction Direction) string
```
Neighbor returns a geohash string that corresponds to the provided geohash's
neighbor in the provided direction#### func NeighborInt
```go
func NeighborInt(hash uint64, direction Direction) uint64
```
NeighborInt returns a uint64 that corresponds to the provided hash's neighbor in
the provided direction at 64-bit precision.#### func NeighborIntWithPrecision
```go
func NeighborIntWithPrecision(hash uint64, bits uint, direction Direction) uint64
```
NeighborIntWithPrecision returns a uint64s that corresponds to the provided
hash's neighbor in the provided direction at the given precision.#### func Neighbors
```go
func Neighbors(hash string) []string
```
Neighbors returns a slice of geohash strings that correspond to the provided
geohash's neighbors.#### func NeighborsInt
```go
func NeighborsInt(hash uint64) []uint64
```
NeighborsInt returns a slice of uint64s that correspond to the provided hash's
neighbors at 64-bit precision.#### func NeighborsIntWithPrecision
```go
func NeighborsIntWithPrecision(hash uint64, bits uint) []uint64
```
NeighborsIntWithPrecision returns a slice of uint64s that correspond to the
provided hash's neighbors at the given precision.#### func Validate
```go
func Validate(hash string) error
```
Validate the string geohash.#### type Box
```go
type Box struct {
MinLat float64
MaxLat float64
MinLng float64
MaxLng float64
}
```Box represents a rectangle in latitude/longitude space.
#### func BoundingBox
```go
func BoundingBox(hash string) Box
```
BoundingBox returns the region encoded by the given string geohash.#### func BoundingBoxInt
```go
func BoundingBoxInt(hash uint64) Box
```
BoundingBoxInt returns the region encoded by the given 64-bit integer geohash.#### func BoundingBoxIntWithPrecision
```go
func BoundingBoxIntWithPrecision(hash uint64, bits uint) Box
```
BoundingBoxIntWithPrecision returns the region encoded by the integer geohash
with the specified precision.#### func (Box) Center
```go
func (b Box) Center() (lat, lng float64)
```
Center returns the center of the box.#### func (Box) Contains
```go
func (b Box) Contains(lat, lng float64) bool
```
Contains decides whether (lat, lng) is contained in the box. The containment
test is inclusive of the edges and corners.#### func (Box) Round
```go
func (b Box) Round() (lat, lng float64)
```
Round returns a point inside the box, making an effort to round to minimal
precision.#### type Direction
```go
type Direction int
```Direction represents directions in the latitute/longitude space.
```go
const (
North Direction = iota
NorthEast
East
SouthEast
South
SouthWest
West
NorthWest
)
```
Cardinal and intercardinal directions