COMMENT CONVERTIR DES COORDONNÉES GPS DEGRÉS MINUTES SECONDES (DMS) EN DEGRÉS DÉCIMAUX (DD) EXCEL
Pour faire suite à la série des précédents tutoriels, dans lesquels nous avons déjà eu l’occasion d’étudier les méthodes permettant d’insérer des données sur une carte de France, et suite à la demande de kimo BSR, je vais maintenant vous expliquer comment transformer des coordonnées terrestres exprimées sous un format DMS (pour Degrés, Minutes, Secondes) sous le format reconnu par Excel, c’est-à-dire en DD (Degrés décimaux).
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
Les données exprimant des coordonnées peuvent être exprimées suivant deux formats populaires :
- Le format DMS (Degrés / Minutes / Secondes), également appelé système sexagésimal : par exemple 48 51’31.0"N sur la capture ci-dessus
- Le format DD (Degrés décimaux) : par exemple 48,858611
Pour identifier clairement un point situé sur la surface de la Terre, il nécessaire de disposer d’un couple de données qui expriment alors :
- La latitude : qui permet de positionner un point en fonction de l’équateur au nord, ou au sud,
- La longitude : qui permet de positionner un point en fonction du méridien de Greenwich à l’est ou à l’ouest,
Et c’est la combinaison de ces deux informations qui donne les coordonnées exactes du point (tout comme les coordonnées des cellules sur la feuille de calcul sont représentées par une lettre et une colonne !)
2. Convertir des DMS en DD
Pour commencer, nous allons vouloir convertir des données exprimées en DMS en données DD :
Pour commencer, regardons comment interpréter ces coordonnées :
- La première information dont nous disposons correspond à un nombre exprimé en degrés qui peut prendre une valeur comprise entre 0 et 90 pour latitude (soit 180 avec le Nord et le Sud) et 0 et 180 pour la longitude (soit 360 au total). Il s’agit de la partie entière de la position.
- Ensuite nous retrouvons les minutes d’angles, qui pourront avoir pour valeur, comme les minutes horaires un nombre compris entre 0 et 59,
- La donnée suivante est encore exprimée en base 60, il s’agit des secondes d’angles qui sont exprimées sous une forme décimale, généralement au dixième,
- Et pour finir l’orientation à opérer (positive pour une orientation vers le Nord ou l’Est ou négative, vers le Sud ou l’Ouest)
Pour réaliser l’opération de conversion, nous allons devoir procéder en étapes successives :
2.1. Calcul de la partie entière
Pour calculer la partie entière, il suffit simplement de prendre la partie située sur la gauche de la coordonnées DMS.
Pour cela, nous pouvons nous aider de la fonction GAUCHE() d’Excel
=GAUCHE(A10;2)
Dans cet exemple, nous récupérons les deux caractères situés sur la gauche de la cellule A10, dans laquelle se trouve la latitude de la Tour Eiffel.
En revanche, si nous regardons les coordonnées de la longitude, nous constatons que la partie entière n’est constituée que d’un seul chiffre (2 ).
Nous allons donc rendre dynamique l’extraction de la partie entière en utilisant la fonction TROUVE() qui permet de récupérer la position à laquelle se trouve un ou plusieurs caractères au sein d’un texte.
Retenez bien le fonctionnement de cette fonction, car nous allons l’utiliser à de nombreuses reprises au sein de ce tutoriel :
=GAUCHE(A10;TROUVE(" ";A10))
Ici, nous nous aidons du symbole degré (« ») pour limiter le nombre de caractères à extraire pour obtenir la partie entière.
En revanche, étant donné que ce caractère se trouve en troisième position, Excel nous retourne alors les trois premiers caractères de la chaîne.
Nous allons donc devoir ôter un caractère de ce résultat !
=GAUCHE(A10;TROUVE(" ";A10)-1)
À présent, si nous regardons le résultat, nous constatons qu’effectivement Excel nous retourne le nombre entier correspondant (« 48 »), mais celui-ci est aligné sur la gauche de la cellule.
Et comme nous avons déjà eu l’occasion de le découvrir dans le chapitre dédié à l’apprentissage d’Excel pour les débutants (cliquez-ici pour apprendre à utiliser Excel), lorsque le contenu d’une cellule est aligné sur sa gauche, c’est qu’Excel considère qu’il s’agit d’une chaîne de caractères !
Nous allons alors devoir convertir ce résultat en une valeur numérique en la multipliant soit par 1, soit par -1.
Ce coefficient va évidemment dépendre de l’orientation de la position, laquelle nous est donnée par le dernier caractère (« N » ou « E » pour 1, et « S » ou « O » pour -1) :
=GAUCHE(A10;TROUVE(" ";A10)-1)*SI(OU(DROITE(A10)="N";DROITE(A10)="E");1;-1)
À présent, la valeur correspondante à la partie entière est bien alignée sur la droite de la cellule :
2.2. Calcul des minutes
Maintenant, nous souhaitons extraire les minutes qui correspondent aux coordonnées.
Pour cela, nous allons pouvoir nous aider des symboles qui encadrent ces dernières (entre le symbole des degrés « » et celui des minutes « ‘ »).
Pour extraire une partie d’une chaine de caractères qui se trouve au centre d’une chaîne principale nous pouvons utiliser la fonction STXT() (ce qui signifie Sous-Texte).
La fonction STXT() attend trois arguments :
=STXT(texte; no_départ; no_car)
Lesquels correspondent :
- Texte : il s’agit de la chaîne de caractères principale depuis laquelle nous souhaitons réaliser l’extraction de caractères,
- No_départ : il s’agit du numéro qui correspond au caractère à partir duquel nous souhaitons réaliser l’extraction,
- No_car : il s’agit du nombre de caractères que nous souhaitons extraire
Pour obtenir le nombre de minutes dans la chaîne, nous utilisons la fonction STXT() de la manière suivante :
=STXT(A10;TROUVE(" ";A10);TROUVE("'";A10)-TROUVE(" ";A10))
Le résultat est alors le suivant :
Pour supprimer le caractère indésirable, nous allons simplement décaler le début de l’extraction d’un caractère et au contraire réduire le nombre de caractères récupérés d’un caractère :
=STXT(A10;TROUVE(" ";A10)+1;TROUVE("'";A10)-TROUVE(" ";A10)-1)
En pour finir, comme nous l’avons vu un peu plus tôt, étant donné que les minutes sont exprimées sur une base sexagésimale, il ne reste plus qu’à diviser ce résultat par 60 pour obtenir le début de la partie décimale :
=STXT(A10;TROUVE(" ";A10)+1;TROUVE("'";A10)-TROUVE(" ";A10)-1)/60
2.3. Calcul des secondes
Le dernier élément à calculer correspond aux secondes, et celui-ci est encadrée par les symboles apostrophe « ‘ » et guillemets « " » :
=STXT(A10;TROUVE("'";A10)+1;TROUVE("""";A10)-TROUVE("'";A10)-1)
Attention, pour saisir des guillemets dans une chaîne de caractères, il convient de les échapper au préalable (en saisissant les saisissant deux fois).
Avec les guillemets de la chaîne de caractères, cela fait donc quatre guillemets à la suite !
Ensuite, nous divisons le résultat obtenu par 3600 :
=STXT(A10;TROUVE("'";A10)+1;TROUVE("""";A10)-TROUVE("'";A10)-1)/3600
2.4. Obtention du format DD
Et pour terminer, il ne reste plus qu’à additionner ces trois résultats pour en obtenir la correspondance sous la forme de degrés décimaux :
Et voilà, la conversion des coordonnées Degrés/Minutes/Secondes en Degrés décimaux n’a maintenant plus autant secret pour vous !
À partir de là, la conversion inverse ne devrait pas poser de problème particulier.
Dans le cas contraire, si vous souhaitez également que je vous fasse un tutoriel, n’hésitez pas à m’en faire part en commentaire !
Vous pouvez également télécharger le fichier d’illustration pour réaliser des conversions très rapide !