Geocalc
Calculate distance, bearing and more between Latitude/Longitude points.
For more information please check docs for: Geocalc.distance_between Geocalc.bearing Geocalc.destination_point Geocalc.intersection_point
Summary
Functions
Calculates bearing. Return radians
Converts degrees to radians. Return radians
Finds point between start and end points in direction to end point with given distance (in meters). Finds point from start point with given distance (in meters) and bearing. Return array with latitude and longitude
Calculates distance between 2 points. Return distance in meters
Finds intersection point from start points with given bearings. Return array with latitude and longitude. Raise an exception if no intersection point found
Converts radians to degrees. Return degrees
Functions
Calculates bearing. Return radians.
Example
iex> berlin = [52.5075419, 13.4251364]
iex> paris = [48.8588589, 2.3475569]
iex> Geocalc.bearing(berlin, paris)
-1.9739245359361486
iex> Geocalc.bearing(paris, berlin)
1.0178267866082613
Finds point between start and end points in direction to end point with given distance (in meters). Finds point from start point with given distance (in meters) and bearing. Return array with latitude and longitude.
Example
iex> berlin = [52.5075419, 13.4251364]
iex> paris = [48.8588589, 2.3475569]
iex> distance = 250_000
iex> Geocalc.destination_point(berlin, paris, distance)
{:ok, [51.578054644172525, 10.096282782248409]}
Example
iex> zero_point = [0.0, 0.0]
iex> equator_degrees = 90.0
iex> equator_bearing = Geocalc.degrees_to_radians(equator_degrees)
iex> distance = 1_000_000
iex> Geocalc.destination_point(zero_point, equator_bearing, distance)
{:ok, [5.484172965344896e-16, 8.993216059187306]}
Example
iex> berlin = [52.5075419, 13.4251364]
iex> bearing = -1.9739245359361486
iex> distance = 100_000
iex> Geocalc.destination_point(berlin, bearing, distance)
{:ok, [52.147030316318904, 12.076990111001148]}
Example
iex> berlin = [52.5075419, 13.4251364]
iex> paris = [48.8588589, 2.3475569]
iex> bearing = Geocalc.bearing(berlin, paris)
iex> distance = 400_000
iex> Geocalc.destination_point(berlin, bearing, distance)
{:ok, [50.97658022467569, 8.165929595956982]}
Calculates distance between 2 points. Return distance in meters.
Example
iex> berlin = [52.5075419, 13.4251364]
iex> paris = [48.8588589, 2.3475569]
iex> Geocalc.distance_between(berlin, paris)
878327.4291149472
iex> Geocalc.distance_between(paris, berlin)
878327.4291149472
Finds intersection point from start points with given bearings. Return array with latitude and longitude. Raise an exception if no intersection point found.
Example
iex> berlin = [52.5075419, 13.4251364]
iex> berlin_bearing = -1.974
iex> london = [51.5286416, -0.1015987]
iex> london_bearing = 1.512
iex> Geocalc.intersection_point(berlin, berlin_bearing, london, london_bearing)
{:ok, [51.4757093398206, 9.75751801580032]}
Example
iex> berlin = [52.5075419, 13.4251364]
iex> bearing = Geocalc.degrees_to_radians(90.0)
iex> Geocalc.intersection_point(berlin, bearing, berlin, bearing)
{:error, "No intersection point found"}