geohash_nif v1.0.0 Geohash View Source
Drop in replacement fot the Elixir native Geohash encode/decode library implemented as a NIF
Basic Usage
iex(1)> Geohash.encode(42.6, -5.6, 5)
"ezs42"
iex(1)> Geohash.encode(42.6, -5.6, 11)
"ezs42e44yx9"
iex(1)> Geohash.decode("ezs42")
{42.605, -5.603}
iex(1)> Geohash.neighbors("ezs42")
%{
"e" => "ezs43",
"n" => "ezs48",
"ne" => "ezs49",
"nw" => "ezefx",
"s" => "ezs40",
"se" => "ezs41",
"sw" => "ezefp",
"w" => "ezefr"
}
iex(1)> Geohash.adjacent("ezs42","n")
"ezs48"
iex(1)> Geohash.bounds("u4pruydqqv")
%{
max_lat: 57.649115324020386,
max_lon: 10.407443046569824,
min_lat: 57.649109959602356,
min_lon: 10.407432317733765
}
Link to this section Summary
Functions
Calculate adjacent/2
geohash in ordinal direction ["n","s","e","w"]
.
Calculates bounds for a given geohash
Decodes given geohash to a coordinate pair
Decodes given geohash to a bitstring
Encodes given coordinates to a geohash of length precision
Calculate adjacent hashes for the 8 touching neighbors/2
Link to this section Functions
Calculate adjacent/2
geohash in ordinal direction ["n","s","e","w"]
.
Examples
iex> Geohash.adjacent("ezs42","n")
"ezs48"
Calculates bounds for a given geohash
Examples
iex> Geohash.bounds("u4pruydqqv")
%{
min_lon: 10.407432317733765,
min_lat: 57.649109959602356,
max_lon: 10.407443046569824,
max_lat: 57.649115324020386
}
Decodes given geohash to a coordinate pair
Examples
iex> {_lat, _lng} = Geohash.decode("ezs42")
{42.605, -5.603}
Decodes given geohash to a bitstring
Examples
iex> Geohash.decode_to_bits("ezs42")
<<0b0110111111110000010000010::25>>
Encodes given coordinates to a geohash of length precision
Examples
iex> Geohash.encode(42.6, -5.6, 5)
"ezs42"
Calculate adjacent hashes for the 8 touching neighbors/2
Options
These options are specific to this function
:keys
-- controls how keys in objects are decoded. Possible values are::strings
(default) - decodes keys as binary strings (compatible mode):atoms
- decodes keys as atoms (fast mode)
Examples
iex> Geohash.neighbors("6gkzwgjz")
%{
"n" => "6gkzwgmb",
"s" => "6gkzwgjy",
"e" => "6gkzwgnp",
"w" => "6gkzwgjx",
"ne" => "6gkzwgq0",
"se" => "6gkzwgnn",
"nw" => "6gkzwgm8",
"sw" => "6gkzwgjw"
}
iex> Geohash.neighbors("6gkzwgjz", keys: :atoms)
%{
n: "6gkzwgmb",
s: "6gkzwgjy",
e: "6gkzwgnp",
w: "6gkzwgjx",
ne: "6gkzwgq0",
se: "6gkzwgnn",
nw: "6gkzwgm8",
sw: "6gkzwgjw"
}