Calculer la distance entre deux points sur la terre avec Python

Mbote ! J’espère que tu vas bien, aujourd’hui travaillons un exercice pour nous réchauffer les mains. Essayons d’utiliser quelques notions apprises avec python, en résolvant ce petit problème de calculer la distance entre deux points sur la terre avec le langage de programmation Python.

C’est tout simplement un exercice intéressant à faire, surtout quand tu débutes avec le langage de programmation Python.

Algorithme du programme Python

Il s’agit d’un programme Python simple, qui se construit sur base de la formule de HAVERSINE. La première chose est de récupérer les coordonnées de deux points P1 et P2 du globe ( ou la terre ) ; c’est-à-dire respectivement leurs latitude ( lati_P et lati_Q) et leurs longitude ( longi_P et longi_Q), qui sont des variables dans notre programme.

Une fois les 4 variables obtenues, c’est-à-dire 2 pour le point P ( sa latitude lati_P et son longitude longi_P) et 2 autres pour Q (sa latitude : lati_Q et son longitude longi_Q) , on applique tout simplement la formule de HAVERSINE pour trouver la distance entre les deux points.

Sans problème, car en réalité un point est retrouvé sur la terre grâce à ses coordonnées ( latitudes et longitudes ) , avoir donc deux points , c’est-à-dire deux coordonnées nous permet facilement calculer la distance entre eux.

Mais attention , avant de faire tout ceci, j’ai pensé dans un premier temps demander à l’utilisateur d’entrer son unité d’angles , car s’il veut entrer les valeurs en radians ou en degrés, le programme ne devrait pas donner une distance erronée.

A lire également :  Ce qu’il faut faire avant, pendant et après avoir appris le langage de programmation Python

Formule de HAVERSINE pour calculer la distance entre deux points avec Python

La petite description est la suivante, concernant les variables que j’ai utilisé dans ce programme :

R = est la valeur du rayon de la terre, dans notre programme c’est la variable rayonTerre = 6371

Toutes les fonctions mathématiques avant de les utiliser sont d’abord importées grâces aux lignes commençant par import…. ( acos : qui est arcosinus , cos : cosinus , sin : sinus , radians : la fonction qui va nous permettre de convertir une valeur de l’angle en radians )

lati_Q et lati_P : latitude respectivement du point Q et du point P

d = la distance finale , obtenue après calcul qui a été définie comme étant nulle au début du programme.

Code Python du programme de distance entre deux points sur la terre avec Python

"""
Created : Exaucé Maruba
"""
from math import acos
from math import cos
from math import sin
from math import radians

rayonTerre = 6371
d = 0


print("\nCALCULER DISTANCE ENTRE DEUX POINTS DU GLOBE")
print("_____________________________________________________\n")

choix = 0
while(True):
    print(f"1. Degré \n2. Radians\n")
    choix = int(input("Si vous voulez travailler en degré, tapez 1 , si en radians tapez 2... \n Votre choix : "))
    if (choix ==1 or choix ==2):
        print(f' Choix {choix } selectionneé...\n')
        break

while(True):
    lati_P = input("Entrer la latitude du pount P ")
    longi_P = input("Entrer la longitude du point P : ")
    lati_Q = input("Entrer  latitude du point Q ")
    longi_Q = input("Entrer la longitude du point Q : ")

    try:
        lati_P = float(lati_P)
        lati_Q = float(lati_Q)
        longi_Q = float(longi_Q)
        longi_P = float(longi_P)
        
        if( (-90<lati_P<=90) and (-90<lati_Q<=90) and (0<longi_P<=360) and (0<longi_Q<=360)):
            break
        else:
            print(" \nNotices : La latitude doit être comprise entre -90 et 90 et la longitude entre 0 et 360")

    except ValueError:
        print(f"\nRessayer...Le programme Autorise seulement des réels...")
    except TypeError:
        print(f" Erreur de conversion")
    except:
        print(f"Erreur...Ressayer...")

    

if choix==1:
    try:
        d = rayonTerre * acos(sin(lati_P) * sin(lati_Q) + cos(lati_P)*cos(lati_Q)*cos(longi_P-longi_Q))
    except:
        print("Erreur , Ressayer...")
elif choix==2:
    try:
        d = rayonTerre * radians((acos(sin(radians(lati_P)) * sin(radians(lati_Q)) + cos(radians(lati_Q)) * cos(radians(lati_P)) * cos(radians(longi_P-longi_Q)))))
    except:
        print("...")
else:
    print(f'Rien comme choix')

print(f"\n La distance entre P({lati_P:.0f},{longi_P:.0f}) et Q({lati_Q:.0f},{longi_Q:.0f}) vaut : {d:.2f} km")


En conclusion : distance entre deux points sur la terre avec python

L’exercice est simple à faire, surtout lorsque c’est du copier – coller. Mais je t’invite à réécrire ce programme en regardant celui fournie exactement dans cet article. En évitant de copier et de coller avec ta souris ou ton clavier, tu apprends facilement en retapant de vous toi même du code. Si tu rencontres de difficultés, à la mise en place de cet exercice de calculer de distance entre deux points , laisser moi un commentaire en bas pour un partage d’ensemble, A très bientôt !

About the author

Curieux aux nouvelles technologies, développeur python vivant à Kinshasa, Congo - RD.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

0 Partages
Partagez
Tweetez
Partagez
Enregistrer