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.
Version imprimable
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.
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 !
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
bonjour,
c'est un problème de formatage utf-8 des données et ou du fichier.
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:
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 */ ?>
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
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 :
et dans le message suivant, tu montres un extrait du fichier sous la forme :Citation:
Mon fichier est sous ce format 34°26.44S, 057°26.64W
Il faudrait savoir, non ?Citation:
34 26.44S, 057 26.64W
Comprends-tu cette ligne?
Elle signifie que les caractères autres que alphanumériques (c-à-d autres que lettres et chiffres) sont transformés en "-".Code:
1
2function convertDec($var) { // Sexagésimal vers décimal $var = preg_replace('#([^.a-z0-9]+)#i', '-', $var);
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:$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...
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:
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 jeCode:$arc=$var;
Cdt
Bon.
On suppose que tu as su récupérer la bonne ligne dans ton fichier, et que tu as obtenu :
Code:$ligne = '34 50.34S , 057 26.64W';
Code:
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);
Après test, j'ai adapté la fonction à tes besoins :
Exemple :Code:
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; }
On obtient :Code:
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 />';
Citation:
34 50.34S 057 26.64W
-34.842777777778 57.451111111111
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:
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"); } } ?>
Tout est là :
Code:
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 />'; } ?>
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
Est ce directement lié à la conversion ???Code:
1
2
3 sexa : 34 50.34S 057 26.64W deci : -0.58055555555556 57.451111111111
c est a dire ?
http://fr2.php.net/manual/en/language.types.float.php encadré rouge.
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
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
Bon la discutions est morte .....