Python Math: Distance between two points using latitude and longitude

Python Math: Exercise-27 with Solution

Write a Python program to calculate distance between two points using latitude and longitude.

Sample Solution:-

Python Code:

from math import radians, sin, cos, acos

print("Input coordinates of two points:")
slat = radians(float(input("Starting latitude: ")))
slon = radians(float(input("Ending longitude: ")))
elat = radians(float(input("Starting latitude: ")))
elon = radians(float(input("Ending longitude: ")))

dist = 6371.01 * acos(sin(slat)*sin(elat) + cos(slat)*cos(elat)*cos(slon - elon))
print("The distance is %.2fkm." % dist)

Sample Output:

Input coordinates of two points:                                                                              
Starting latitude: 23.5                                                                                       
Ending longitude: 67.5                                                                                        
Starting latitude: 25.5                                                                                       
Ending longitude: 69.5                                                                                        
The distance is 300.67km.  


Flowchart: Distance between two points using latitude and longitude

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to print number with commas as thousands separators (from right side)?
Next: Write a python program to calculate the area of a regular polygon.

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz

Python: Tips of the Day

Python: Get the Key Whose Value Is Maximal in a Dictionary

>>> model_scores = {'model_a': 100, 'model_z': 198, 'model_t': 150}
>>> # workaround
>>> keys, values = list(model_scores.keys()), list(model_scores.values())
>>> keys[values.index(max(values))]
>>> # one-line
>>> max(model_scores, key=model_scores.get)