IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Conversion coordonnées DMS (degrés, minutes, secondes) en DD (degrés décimaux) sur un code PERL


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 5
    Par défaut Conversion coordonnées DMS (degrés, minutes, secondes) en DD (degrés décimaux) sur un code PERL
    Bonjour tout le monde, je suis bloqué sur mon code PERL
    J'enregistre des données de localisation grâce à ce programme mais ils enregistre en format DMS (degrés, minutes, secondes) et je voudrais en format DD (degrés décimaux)

    Merci pour votre aide.





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
                # éviter les trame vide...
                next if ( $champs[1] eq '' );
                next if ( $champs[2] eq '' );
                next if ( $champs[3] eq '' );
                next if ( $champs[4] eq '' );
     
                my $latitude = $champs[1] / 100;    # format xx xx° xx' xx''
                $latitude *= -1 if ( $champs[2] eq 'S' );    # N -> +, S -> - on multiplie par -1 pour le Sud
     
                my $longitude = $champs[3] / 100;
                $longitude *= -1 if ( $champs[4] eq 'W' );    # E -> +, W -> - on multiplie par -1 pour L'Ouest
     
                printlog "Enregistrement L: $latitude, l: $longitude\n", 'I'; #on écrit les coordonnées à l'aide de la fonction printlog
    Message de lolo78: J'ai supprimé tes quatre autres messages en doublon de celui-ci. Il est inutile de poster cinq fois le même message sur tous les sous-forums de cette rubrique.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 297
    Par défaut
    Bonjour

    Je n'ai pas tout lu mais je signale que les mots "minute" et "seconde" font référence à la base sexagésimal (base 60).
    Donc une minute, qu'elle soit pour le temps ou pour les angles désigne un soixantième (1/60) de l'unité.
    Et "seconde" veut dire "minute de second rang". Donc un soixantième d'un soixantième (1/3600).

    Dès lors, tu dois être capable de convertir les minutes et secondes en subdivisons de l'unité et ajouter.

    N'est-ce pas ?
    Bonne chance

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Je rejoins Flodelarab. Soit par exemple une valeur (longitude ou latitude) de 24° 35' 42''. Il suffit de faire la somme: 24 + 35/60 + 42/3600. Exemple sous le debugger (ici, j'ai mis la valeur sous la forme d'une chaîne de caractères avec un espace pour signaler le changement d'unité, car ne je connais pas le format réel de tes données en entrée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      DB<1> ($deg, $min, $sec) = split / /, "24 35 42";
     
      DB<2> $min /= 60;
     
      DB<3> $sec /= 3600;
     
      DB<4> $deg_dec = $deg + $min + $sec
     
      DB<5> print  $deg_dec
    24.595
    Remarque: pour les positions géographiques, il est d'usage courant d'utiliser des minutes décimales (par exemple 24° 45,17 min), mais plus rare d'utiliser des degrés décimaux, mais, bon, c'est toi qui vois ce dont tu as vraiment besoin dans ton cas particulier.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 5
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Je n'ai pas tout lu mais je signale que les mots "minute" et "seconde" font référence à la base sexagésimal (base 60).
    Donc une minute, qu'elle soit pour le temps ou pour les angles désigne un soixantième (1/60) de l'unité.
    Et "seconde" veut dire "minute de second rang". Donc un soixantième d'un soixantième (1/3600).

    Dès lors, tu dois être capable de convertir les minutes et secondes en subdivisons de l'unité et ajouter.

    N'est-ce pas ?
    Bonne chance
    J'ai modifié le code pour gardé juste le format DMS est c'est la que je bloque.

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    on t'a montré comment faire. Si tu veux plus d'aide, il faut que tu montres exactement ce qu'il y a dans les différents éléments de ton tableau @champs.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 5
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Bonjour,

    on t'a montré comment faire. Si tu veux plus d'aide, il faut que tu montres exactement ce qu'il y a dans les différents éléments de ton tableau @champs.
    Nom : Capture du 2019-06-11 14-16-43.png
Affichages : 1098
Taille : 228,4 Ko

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 297
    Par défaut
    Le mieux, c'est encore de regarder la documentation adéquate (clic).
    Avec tes cas particuliers:
    GPGLL (clic)
    GPGSV (clic)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction conversion Données décimales en Degré,Minutes,Secondes
    Par NeoGeekette dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/08/2014, 13h40
  2. Formule conversion d'un temps (minutes + secondes)
    Par Faradeorn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2011, 21h33
  3. Conversion Heure Minute Seconde
    Par TiBijou dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 05/01/2010, 14h28
  4. Réponses: 2
    Dernier message: 03/07/2008, 10h40
  5. Réponses: 6
    Dernier message: 08/08/2007, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo