Skip to main content

Taxicab metric on the sphere!

Project description

Seafarer ⛵

Taxicab metric on the sphere! Install via

pip install seafarer

This library calculates the "seafarer distance" between two points on Earth: Travel parallel to latitude and longitude instead of "as the crow flies" – like in the old days...

Usage

Calculate the distance between Schwerin and Helsinki:

from seafarer import seafarer_metric

schwerin = (53.629722, 11.414722) # (lat, lon)
helsinki = (60.170278, 24.952222)

seafarer_metric(schwerin, helsinki)
# 1474.7398906623202 kilometres

You can also obtain the result in different units:

seafarer_metric(schwerin, helsinki, unit="mi")
# 916.3608837507956 miles
seafarer_metric(schwerin, helsinki, unit="ft")
# 4838385.468052049 feet

Seafarer is using the haversine library under the hood and you can use their Unit directly:

from haversine import Unit
seafarer_metric(schwerin, helsinki, unit=Unit.NAUTICAL_MILES)
# 796.2958366185961 nautical miles

What is this? Why Seafarer?

On a 2-dimensional plane, the metric obtained when travelling along the axes is known as taxicab, Manhattan, or L1 metric. What is the equivalent on a 3-dimensional sphere?

We calculate the distance when travelling along the grid of longitudinal and latitudinal lines. When travelling from Schwerin (53°N 11°E) to Helsinki (60°N 24°E) in the example above, there are two possiblities: travel via 53°N 24°E or 60°N 11°E. Unlike the 2D case, these two distances are (generally) different, so we use the short one.

Before navigation improved to a sufficient degree, this is how ships were sailing: parallel to the equator until they hit the target meridian, then North or South to their final destination. Hence seafarer metric! ⛵

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for seafarer, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size seafarer-0.1.0-py2.py3-none-any.whl (5.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size seafarer-0.1.0.tar.gz (5.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page