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 PHP Discussion :

Format coordonées gps


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut Format coordonées gps
    Bonjour,

    J 'ai des coordonnées Gps sous se format : 34-26.44S , 057-26.64W
    Je voudrais les exploiter sous un format lisible par google, existe t il une fonction ou class pour cela . Pas trouvé sur le forum...

    Cordialement.

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut
    Bonjour !

    J'ai déjà eu ce petit problème

    Je te conseillerais donc le site qui m'a permis de m'en sortir :
    http://www.koxin-l.com/php-convertir...s-gps-105.html

    Tu a un script php que tu peux modifier, ou faire le tiens selon les indications !

    Bonne journée !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    Bonjour et merci pour le lien


    Je rencontre aussi un autre problème comment éviter cette erreur a l 'écriture de mon fichier txt 34°26.44S , 057°26.64W je devrais avoir 34°26.44S , 057°56.64W

    Merci de votre aide

  4. #4
    Membre très actif
    Homme Profil pro
    En rupture avec la societé
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : En rupture avec la societé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    bonjour,

    c'est un problème de formatage utf-8 des données et ou du fichier.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    oui c'est pénible ca

    Mon fichier est sous ce format 34°26.44S, 057°26.64W il faudrait que je le transforme pour qu'il soit interprété dans google map

    comment fait ton pour appeler la fonction suivante sanchant que les coordonnées se trouve dans un fichier data.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
    function convertDec($var) { // Sexagésimal vers décimal
     
    $var = preg_replace('#([^.a-z0-9]+)#i', '-', $var);
    $tab = explode('-', $var);
    $varD = $tab[0] + ($tab[1] / 60) + ($tab[2] / 3600);
    $pattern = array('n', 's', 'e', 'o', 'N', 'S', 'E', 'O');
    $replace = array('', '-', '', '-', '', '-', '', '-');
    return str_replace($pattern, $replace, $tab[3]) . $varD;
    }
     
    function convertSexa($var, $pos) { // Décimal vers sexagésimal
     
    if ($pos == 'lat')
    {
    if ($var > 0)$card = 'N';
    else $card = 'S';
    }
    if ($pos == 'long')
    {
    if ($var > 0)$card = 'E';
    else $card = 'O';
    }
     
    $var = abs($var);
    $deg = intval($var);
    $min = ($var - $deg)*60;
    $sec = ($min - intval($min))*60;
    return str_pad($deg, 2, '0', STR_PAD_LEFT).'°'.intval($min)."'".number_format($sec, 2).'"'.$card;
    }
     
    function convertGPS($lat, $long) { // Fonction d'appel
    if (preg_match('#([nseo]+)#i', $lat)) // Vérification du type fourni
    {
    echo 'Latitude : '.$lat.' => '.convertDec($lat).'<br />Longitude : '.$long.' => '.convertDec($long);
    }
    else
    {
    echo 'Latitude : '.$lat.' => '.convertSexa($lat, "lat").'<br />Longitude : '.$long.' => '.convertSexa($long, "long");
    }
     
    }
     
    /* L'appel de la fonction doit être du type :
     
    convertGPS('49°16\'51.3"N', '01°46\'28.0"E');
    ou 
    convertGPS('49.2809167', '1.7744445');
     
    Elle retournera :
     
    Latitude : 49°16'51.3"N => 49.280916666667
    Longitude : 01°46'28.0"E => 1.7744444444444
     
    Latitude : 49.2809167 => 49°16'51.30"N
    Longitude : 1.7744445 => 01°46'28.00"E
    */
    ?>

  6. #6
    Membre très actif
    Homme Profil pro
    En rupture avec la societé
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : En rupture avec la societé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Citation Envoyé par loribac Voir le message
    oui c'est pénible ca
    Mon fichier est sous ce format 34°26.44S, 057°26.64W il faudrait que je le transforme
    les données sont sous ce format mais le fichier en lui meme est de quel format ?
    tu devrais essayer utf8_decode(string).
    il n’empêche que si ton fichier et le html ne sont pas utf8, tu auras certainement des problèmes.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    Bonjour burndev


    voici le format

    34 26.34S , 057 26.64W
    34 50.34S , 057 26.64W
    34 80.34S , 057 26.64W
    35 26.34S , 057 26.64W

    toukours pas de solution pour les convertirs dans un format qui puisse être interprété par google map sous ce format

    47.953145,0.833244


    cdt

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je me trompe, ou tes connaissances en PHP sont "très" limitées ?

    Comme une poule qui trouve un couteau, tu sembles ne pas savoir quoi faire des infos qu'on te donne.

    As-tu du code à montrer, ou attends-tu qu'on l'écrive à ta place ?
    Que sais-tu déjà faire ?
    - sais-tu lire le fichier txt ?
    - sais-tu récupérer la ligne de ton fichier txt ? (si oui, montre un peu le code)
    - sais-tu la formater, pour que les variables obtenus soient exploitables dans la fonction de conversion fournie ?
    - sais-tu ce que signifie "formatage utf-8" ?
    - ...

    Notamment, tu dis :
    Mon fichier est sous ce format 34°26.44S, 057°26.64W
    et dans le message suivant, tu montres un extrait du fichier sous la forme :
    34 26.44S, 057 26.64W
    Il faudrait savoir, non ?

    Comprends-tu cette ligne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function convertDec($var) { // Sexagésimal vers décimal
    $var = preg_replace('#([^.a-z0-9]+)#i', '-', $var);
    Elle signifie que les caractères autres que alphanumériques (c-à-d autres que lettres et chiffres) sont transformés en "-".
    Par conséquent, la fonction convertDec($var) fonctionnera AUSSI pour des variables comme :
    - 34 26.44S
    - 34?26.44S
    - 34:26.44S
    - 34-26.44S

    [EDIT] Oups ! et aussi "." (pas modifié) => Ce qui entraine une erreur (vu après test)
    => à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var = preg_replace('#([^a-z0-9]+)#i', '-', $var);

    N.B. Il n'y a pas de honte à ne pas savoir. La honte serait de ne pas apprendre...
    Dernière modification par Invité ; 15/06/2013 à 15h56.

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    Une question s’impose qui de la poule ou de l’œuf était là en 1er ?????

    En réalité je ne veux pas devenir un as de la prog ce que je veux c’est finir
    Mon projet. Oui je l 'avoue je ne suis pas calé en php même si ne m 'interdit pas de m'y intéressé.... Bon, je reconnais que ma question est mal posée et brouillonne . Mais stp j'ai trop de respect pour les gallinacés pour un seul instant oser m'y comparer .

    Donc mon fichier ou se trouve les coordonées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fp = fopen("archive.txt", "r");
    $arc=fread($fp,2000);
    fclose($fp);

    je ne comprends pas le terme "appeler une fonction" Je dirais que pour la vairiable je ferais

    me tromperais je

    Cdt

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bon.
    On suppose que tu as su récupérer la bonne ligne dans ton fichier, et que tu as obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne = '34 50.34S , 057 26.64W';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    // on sépare les 2 bouts pour obtenir les latitude/longitude sexagésimal :
    $ligne_array = explode(' , ', $ligne);
    $sexa_latitude = $ligne_array[0];	// '34 50.34S'
    $sexa_longitude = $ligne_array[1];	// '057 26.64W'
    // on peut mainteant les passer par la fonction de conversion :
    $deci_latitude = convertDec($sexa_latitude);
    $deci_longitude = convertDec($sexa_longitude);
    Dernière modification par Invité ; 15/06/2013 à 15h57.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Après test, j'ai adapté la fonction à tes besoins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function convertDec($var) { // Sexagésimal vers décimal
    	$sens = substr($var,-1);
    	$var = substr($var, 0, strlen($var)-1);
    	$var = preg_replace('#([^a-z0-9]+)#i', '-', $var);
    	$tab = explode('-', $var);
    	$varD = $tab[0] + ($tab[1] / 60) + ($tab[2] / 3600);
    	if(in_array($sens, array('S', 'O'))){ $varD = -$varD; }
    	return $varD;
    }
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ligne = '34 50.34S , 057 26.64W';
    // on sépare les 2 bouts pour obtenir les latitude/longitude sexagésimal :
    $ligne_array = explode(' , ', $ligne);
    $sexa_latitude = $ligne_array[0];	// '34 50.34S'
    $sexa_longitude = $ligne_array[1];	// '057 26.64W'
    // on peut mainteant les passer par la fonction de conversion :
    $deci_latitude = convertDec($sexa_latitude);
    $deci_longitude = convertDec($sexa_longitude);
     
     
    echo $sexa_latitude.' '.$sexa_longitude.'<br />';
    echo $deci_latitude.' '.$deci_longitude.'<br />';
    On obtient :
    34 50.34S 057 26.64W
    -34.842777777778 57.451111111111

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    jreaux62 merci de ton aide

    alors voila ce que j 'ai fais dans l 'echo $ligne en haut j'ai bien 35 26.34S , 057 26.64W


    mais je n'ai pas de résulta de conversion ( pas d'erreur dans le script )


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    $fp = fopen("archive.txt", "r");
     
    while (!feof($fp)) {
        $don = fgets($fp,1024);
        $ligne="\n$don";
     
    }
    echo"$ligne";
     
    $ligne=$var;
    function convertDec($var) { // Sexagésimal vers décimal
     
    $var = preg_replace('#([^.a-z0-9]+)#i', '-', $var);
    $tab = explode(',', $var);
    $varD = $tab[0] + ($tab[1] / 60) + ($tab[2] / 3600);
    $pattern = array('n', 's', 'e', 'o', 'N', 'S', 'E', 'O');
    $replace = array('', '-', '', '-', '', '-', '', '-');
    return str_replace($pattern, $replace, $tab[3]) . $varD;
    }
     
    function convertSexa($var, $pos) { // Décimal vers sexagésimal
     
    if ($pos == 'lat')
    {
    if ($var > 0)$card = 'N';
    else $card = 'S';
    }
    if ($pos == 'long')
    {
    if ($var > 0)$card = 'E';
    else $card = 'O';
    }
     
    $var = abs($var);
    $deg = intval($var);
    $min = ($var - $deg)*60;
    $sec = ($min - intval($min))*60;
    return str_pad($deg, 2, '0', STR_PAD_LEFT).'°'.intval($min)."'".number_format($sec, 2).'"'.$card;
    }
     
    function convertGPS($lat, $long) { // Fonction d'appel
    if (preg_match('#([nseo]+)#i', $lat)) // Vérification du type fourni
    {
    echo 'Latitude : '.$lat.' => '.convertDec($lat).'<br />Longitude : '.$long.' => '.convertDec($long);
    }
    else
    {
    echo 'Latitude : '.$lat.' => '.convertSexa($lat, "lat").'<br />Longitude : '.$long.' => '.convertSexa($long, "long");
    }
     
    }
    ?>

  13. #13
    Invité
    Invité(e)
    Par défaut
    Tout est là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    function convertDec($var) { // Sexagésimal vers décimal
    	$sens = substr($var,-1);
    	$var = substr($var, 0, strlen($var)-1);
    	$var = preg_replace('#([^a-z0-9]+)#i', '-', $var);
    	$tab = explode('-', $var);
    	$varD = $tab[0] + ($tab[1] / 60) + ($tab[2] / 3600);
    	if(in_array($sens, array('S', 'O'))){ $varD = -$varD; }
    	return $varD;
    }
    // Lecture du fichier
    $fp = fopen("archive.txt", "r");
     
    while (!feof($fp)) {
    	$ligne = fgets($fp,1024); // récupération de la ligne
     
    	// on sépare les 2 bouts pour obtenir les latitude/longitude sexagésimal :
    	$ligne_array = explode(' , ', $ligne);
    	$sexa_latitude = $ligne_array[0];	// '34 50.34S'
    	$sexa_longitude = $ligne_array[1];	// '057 26.64W'
    	// on peut mainteant les passer par la fonction de conversion :
    	$deci_latitude = convertDec($sexa_latitude);
    	$deci_longitude = convertDec($sexa_longitude);
     
    	// TEST d'affichage
    	echo 'sexa : '.$sexa_latitude.' '.$sexa_longitude.'<br />';
    	echo 'deci : '.$deci_latitude.' '.$deci_longitude.'<br />';
    	echo '<br />';
    }
    ?>

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    ok effectivement j 'ai un meilleur résulta


    mais les coordonnées retorunées ne corespondes pas a la position initial

    on devrait obtenir ;-34.822823,-57.460213 et le script retourne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sexa : 34 50.34S 057 26.64W
    deci : -0.58055555555556 57.451111111111
    Est ce directement lié à la conversion ???

  15. #15
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 369
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 369
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par loribac Voir le message
    Est ce directement lié à la conversion ???
    Sûrement. Mieux vaut éviter de travailler sur des réels (les valeurs seront toujours approximatives), reste sur les chaînes de caractères.

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    c est a dire ?

  17. #17
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 369
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 369
    Billets dans le blog
    17

  18. #18
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    jreaux62 avait trouvé la bonne position enfin presque-34.842777777778 57.451111111111 c'est plutôt -57.451111111111 comment ce fait il que reprenant le même script je ne trouve pas le même résulta

  19. #19
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    Bon je ne sais quoi dire mais en prenant le meme script j ai pas le même resulta

    voyez vous par vous même

    http://www.maritime-position.fr/MAIL2/z1.php

  20. #20
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Par défaut
    Bon la discutions est morte .....

Discussions similaires

  1. [MySQL] Stockage coordonées GPS
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/02/2015, 08h50
  2. [phpMyAdmin] Format coordonnées GPS
    Par Ysamir dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 12/08/2013, 15h12
  3. Format des données gps
    Par loribac dans le forum APIs Google
    Réponses: 2
    Dernier message: 19/06/2013, 12h04
  4. Format de données GPS EAU
    Par chapitre37 dans le forum SIG : Système d'information Géographique
    Réponses: 4
    Dernier message: 21/04/2012, 14h05
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 01h11

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