cpan:BDUGGAN

# NAME

Geo::Basic - Basic geospatial functions

# SYNOPSIS

``````use Geo::Basic;
my \$hash = geohash-encode lat => 51.435, lon => -0.215, precision => 5;
# "gcpue5"

my \$decoded = geohash-decode \$hash;
# %( lat-max => 51.416016, lat-min => 51.459961,
#    lon-max => -0.219727, lon-min => -0.175781 )

my \$neighbors = geohash-neighbors \$hash;
# [gcpuek gcpueh gcpudu gcpue7 gcpudg gcpue6 gcpue4 gcpudf]

my \$distance-km = haversine-km :lat1(51.435), :lon1(-0.215), :lat2(51.435), :lon2(-0.214);
# 0.06931914818231608

my \$distance-mi = haversine-miles :lat1(51.435), :lon1(-0.215), :lat2(51.435), :lon2(-0.214);
# 0.04307292175092216
``````

# DESCRIPTION

These are a few simple utilities for doing geospatial calculations. The following functions are provided:

``````* `geohash-encode` -- encode a latitude and longitude into a geohash
* `geohash-decode` -- decode a geohash into a latitude and longitude
* `geohash-neighbors` -- find the neighbors of a geohash
* `haversine-km` -- calculate the distance between two points on the earth in kilometers
* `haversine-miles` -- calculate the distance between two points on the earth in miles
``````

# FUNCTIONS

### sub geohash-encode

```sub geohash-encode(
Rat(Real) :\$lat,
Rat(Real) :\$lon,
Int :\$precision = 9
) returns Mu
```

Encode a latitude and longitude into a geohash

### sub geohash-decode

```sub geohash-decode(
Str \$geo
) returns Hash
```

Decode a geohash into a latitude and longitude

```sub radians(
Real \$deg
) returns Mu
```

### sub km-to-miles

```sub km-to-miles(
Real \$km
) returns Mu
```

Convert kilometers to miles

### sub haversine-miles

```sub haversine-miles(
Real :\$lat1,
Real :\$lon1,
Real :\$lat2,
Real :\$lon2
) returns Mu
```

Calculate the great circle distance in miles, using the havarsine formula

### sub haversine-km

```sub haversine-km(
Real :\$lat1,
Real :\$lon1,
Real :\$lat2,
Real :\$lon2
) returns Mu
```

Calculate the great circle distance in kilometers using the havarsine formula

# AUTHOR

Brian Duggan

Original geohash code by Thundergnat on Rosetta Code