Je suis entrain de développer une page pour afficher un profile routier avec les altitudes correspondantes. Ne me
dites-pas jpgraph, on n'a pas la maîtrise des axes Y et X. Pour arriver à mes fins, je doit définir pour chaque ligne le
point de départ (X0,Y0) et d'arrivée (X1,Y1) et c'est la que je bloque!
J'essaie en vain de trouver une solution pour ressortir des valeurs d'un tableaux array. J'ai passé toutes les fonctions
en revue, sans trouver vraiment trouver mon bonheur.
Voilà comme je procède:
$AltitudeMin=min($altitude2);// défini le point le plus bas du graphique
$HauteurGraphe=400; // défini la hauteur du graphique
$distanceX0=0; // premier point en x est à zéro
Tu ne peux pas utiliser un tableau comme celui-ci pour stocker ces valeurs. En effet tu utilises les altitudes comme clef de ton tableau, ce qui fait qu'à une altitude ne correspond qu'une et une seule valeur de delta-x (car ce sont en fait des écarts tes valeurs si j'ai bien compris). Autrement dit dans ton tableau tu indiques ici que pour la clef "435" la valeur vaut "0" dans le premier élément, mais dans le dernier tu écrases cette info en indiquant "435"=>"3". Du coup la valeur associée à la clef "435" est "3" et non plus "0".
Plusieurs solutions : 1. (Que je te préconise) Tu inverses ton tableau et tu stockes directement le couple distance => altitude (et non altitude => delta_distance comme pour le moment) et cela simplifie considérablement ton utilisation après.
2. Tu veux conserver ces données "delta-x" dans ce cas tu stockes un tableau de tableau avec comme premier indice une valeur chiffrée (numéro d'ordre). Ce qui donne : $altitude = array( array(435, 0), array(440, 1), array(560,5), array(630,2), array(435,3)); Mais la suite sera du coup plus compliquée.
Suivant l'origine de tes données brutes, tu choisiras ta solution, mais je ne peux que te conseiller la première qui me semble bcp plus naturelle!
Tu ne peux pas utiliser un tableau comme celui-ci pour stocker ces
valeurs.
En effet tu utilises les altitudes comme clef de ton tableau, ce qui
fait qu'à une altitude ne correspond qu'une et une seule valeur de
delta-x (car ce sont en fait des écarts tes valeurs si j'ai bien
compris).
Autrement dit dans ton tableau tu indiques ici que pour la clef "435"
la valeur vaut "0" dans le premier élément, mais dans le dernier tu
écrases cette info en indiquant "435"=>"3".
Du coup la valeur associée à la clef "435" est "3" et non plus "0".
Plusieurs solutions :
1. (Que je te préconise)
Tu inverses ton tableau et tu stockes directement le couple distance =>
altitude (et non altitude => delta_distance comme pour le moment) et
cela simplifie considérablement ton utilisation après.
2. Tu veux conserver ces données "delta-x" dans ce cas tu stockes un
tableau de tableau avec comme premier indice une valeur chiffrée
(numéro d'ordre). Ce qui donne :
$altitude = array( array(435, 0), array(440, 1), array(560,5),
array(630,2), array(435,3));
Mais la suite sera du coup plus compliquée.
Suivant l'origine de tes données brutes, tu choisiras ta solution, mais
je ne peux que te conseiller la première qui me semble bcp plus
naturelle!
Tu ne peux pas utiliser un tableau comme celui-ci pour stocker ces valeurs. En effet tu utilises les altitudes comme clef de ton tableau, ce qui fait qu'à une altitude ne correspond qu'une et une seule valeur de delta-x (car ce sont en fait des écarts tes valeurs si j'ai bien compris). Autrement dit dans ton tableau tu indiques ici que pour la clef "435" la valeur vaut "0" dans le premier élément, mais dans le dernier tu écrases cette info en indiquant "435"=>"3". Du coup la valeur associée à la clef "435" est "3" et non plus "0".
Plusieurs solutions : 1. (Que je te préconise) Tu inverses ton tableau et tu stockes directement le couple distance => altitude (et non altitude => delta_distance comme pour le moment) et cela simplifie considérablement ton utilisation après.
2. Tu veux conserver ces données "delta-x" dans ce cas tu stockes un tableau de tableau avec comme premier indice une valeur chiffrée (numéro d'ordre). Ce qui donne : $altitude = array( array(435, 0), array(440, 1), array(560,5), array(630,2), array(435,3)); Mais la suite sera du coup plus compliquée.
Suivant l'origine de tes données brutes, tu choisiras ta solution, mais je ne peux que te conseiller la première qui me semble bcp plus naturelle!
$AltitudeMin=min(array_values($altitude));// défini le point le plus bas du graphique $; // défini la hauteur du graphique $distanceX0=0; // premier point en x est à zéro
foreach($altitude as distanceX0 => $altitudeY0){
// Le premier passage de la boucle devrait être comme ça : 0 435 1 440 // Le seconde passage de la boucle devrait être comme ça : 1 440 5 560
Pour l'instant je souhaite comprendre comment passer les valeurs dans imageline, dans un deuxième temps , je ferais les calculs (en principe * 10 la distance et prendre $AltitudeMin comme point zéro et calculer toutes les altitudes en fonction de cette variable).
J'espère que je suis plus clair ?
-- Message monitoré par axinews : http://www.axinews.com/
Bonjour,
Merci à Jedi121 et au P'tit Marcel.
Suite à vos conseils, j'ai modifié et simplifié le cas.
$AltitudeMin=min(array_values($altitude));// défini le point le plus bas du graphique
$HauteurGraphe@0; // défini la hauteur du graphique
$distanceX0=0; // premier point en x est à zéro
foreach($altitude as distanceX0 => $altitudeY0){
// Le premier passage de la boucle devrait être comme ça : 0 435 1
440
// Le seconde passage de la boucle devrait être comme ça : 1 440 5
560
Pour l'instant je souhaite comprendre comment passer les valeurs dans imageline,
dans un deuxième temps , je ferais les calculs (en principe * 10 la distance et prendre
$AltitudeMin comme point zéro et calculer toutes les altitudes en fonction de cette
variable).
J'espère que je suis plus clair ?
--
Message monitoré par axinews : http://www.axinews.com/
$AltitudeMin=min(array_values($altitude));// défini le point le plus bas du graphique $; // défini la hauteur du graphique $distanceX0=0; // premier point en x est à zéro
foreach($altitude as distanceX0 => $altitudeY0){
// Le premier passage de la boucle devrait être comme ça : 0 435 1 440 // Le seconde passage de la boucle devrait être comme ça : 1 440 5 560
Pour l'instant je souhaite comprendre comment passer les valeurs dans imageline, dans un deuxième temps , je ferais les calculs (en principe * 10 la distance et prendre $AltitudeMin comme point zéro et calculer toutes les altitudes en fonction de cette variable).
J'espère que je suis plus clair ?
-- Message monitoré par axinews : http://www.axinews.com/
Jedi121
"Stephane" a écrit le 24/10/2003 :
Suite à vos conseils, j'ai modifié et simplifié le cas.
Oui mais tu n'as toujours pas compris l'histoire des clefs/valeurs : quand tu définis ton tableau 2=>630, 2=>435 quelle valeur va être associée à 2? 630 ou 435? Ce sera la dernière qui a parlé donc tu va perdre tous les points 2=> précédents.
Relis bien les posts!
"Stephane" a écrit le 24/10/2003 :
Suite à vos conseils, j'ai modifié et simplifié le cas.
Oui mais tu n'as toujours pas compris l'histoire des clefs/valeurs :
quand tu définis ton tableau 2=>630, 2=>435
quelle valeur va être associée à 2? 630 ou 435? Ce sera la dernière qui
a parlé donc tu va perdre tous les points 2=> précédents.
Oui mais tu n'as toujours pas compris l'histoire des clefs/valeurs : quand tu définis ton tableau 2=>630, 2=>435 quelle valeur va être associée à 2? 630 ou 435? Ce sera la dernière qui a parlé donc tu va perdre tous les points 2=> précédents.
Relis bien les posts!
Stephane
"Jedi121" a écrit
"Stephane" a écrit le 24/10/2003 :
Suite à vos conseils, j'ai modifié et simplifié le cas.
Oui mais tu n'as toujours pas compris l'histoire des clefs/valeurs : quand tu définis ton tableau 2=>630, 2=>435 quelle valeur va être associée à 2? 630 ou 435? Ce sera la dernière qui a parlé donc tu va perdre tous les points 2=> précédents.
//boucle pour extraire les valeurs $distance=array et $altitude=array for ($i=0; $i<count($altitude)-1; $i++){ $distance=array_values($distance);// extrait la valeur $altitude=array_values($altitude);// extrait la valeur
$distance0=($distance[$i]*$RapportDistanceAltitude); // point X0 $altitude0=$altitude[$i; // point Y0 $distance1=($distance[$i+1]*$RapportDistanceAltitude); // point X1 $altitude1=$altitude[$i+1; // point Y1
$distance0=$distance0+$Distance0Prev; // additionne les distances index 0 $distance1=$distance1+$Distance1Prev; // additionne les distances index 1 $altitude0=($HauteurGraph)-($altitude0-$AltitudeMin); // calcul les altitudes par rapport à $AltitudeMin $altitude1=($HauteurGraph)-($altitude1-$AltitudeMin);// calcul les altitudes par rapport à $AltitudeMin
$Distance0Prev=$distance0;// affecte la variable $distance0 à $Distance0Prev $Distance1Prev=$distance1;// affecte la variable $distance1 à $Distance1Prev }
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.lapassade.ch pour les fans de théâtre
"Jedi121" a écrit
"Stephane" a écrit le 24/10/2003 :
Suite à vos conseils, j'ai modifié et simplifié le cas.
Oui mais tu n'as toujours pas compris l'histoire des clefs/valeurs :
quand tu définis ton tableau 2=>630, 2=>435
quelle valeur va être associée à 2? 630 ou 435? Ce sera la dernière qui
a parlé donc tu va perdre tous les points 2=> précédents.
//boucle pour extraire les valeurs $distance=array et $altitude=array
for ($i=0; $i<count($altitude)-1; $i++){
$distance=array_values($distance);// extrait la valeur
$altitude=array_values($altitude);// extrait la valeur
$distance0=($distance[$i]*$RapportDistanceAltitude); // point X0
$altitude0=$altitude[$i; // point Y0
$distance1=($distance[$i+1]*$RapportDistanceAltitude); // point X1
$altitude1=$altitude[$i+1; // point Y1
$distance0=$distance0+$Distance0Prev; // additionne les distances index 0
$distance1=$distance1+$Distance1Prev; // additionne les distances index 1
$altitude0=($HauteurGraph)-($altitude0-$AltitudeMin); // calcul les altitudes par rapport à $AltitudeMin
$altitude1=($HauteurGraph)-($altitude1-$AltitudeMin);// calcul les altitudes par rapport à $AltitudeMin
$Distance0Prev=$distance0;// affecte la variable $distance0 à $Distance0Prev
$Distance1Prev=$distance1;// affecte la variable $distance1 à $Distance1Prev
}
--
Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo
http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2
http://www.lapassade.ch pour les fans de théâtre
Oui mais tu n'as toujours pas compris l'histoire des clefs/valeurs : quand tu définis ton tableau 2=>630, 2=>435 quelle valeur va être associée à 2? 630 ou 435? Ce sera la dernière qui a parlé donc tu va perdre tous les points 2=> précédents.
//boucle pour extraire les valeurs $distance=array et $altitude=array for ($i=0; $i<count($altitude)-1; $i++){ $distance=array_values($distance);// extrait la valeur $altitude=array_values($altitude);// extrait la valeur
$distance0=($distance[$i]*$RapportDistanceAltitude); // point X0 $altitude0=$altitude[$i; // point Y0 $distance1=($distance[$i+1]*$RapportDistanceAltitude); // point X1 $altitude1=$altitude[$i+1; // point Y1
$distance0=$distance0+$Distance0Prev; // additionne les distances index 0 $distance1=$distance1+$Distance1Prev; // additionne les distances index 1 $altitude0=($HauteurGraph)-($altitude0-$AltitudeMin); // calcul les altitudes par rapport à $AltitudeMin $altitude1=($HauteurGraph)-($altitude1-$AltitudeMin);// calcul les altitudes par rapport à $AltitudeMin
$Distance0Prev=$distance0;// affecte la variable $distance0 à $Distance0Prev $Distance1Prev=$distance1;// affecte la variable $distance1 à $Distance1Prev }
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.lapassade.ch pour les fans de théâtre