Nouvelles:

De retour, dans un nouveau format!

Menu principal

Direction et origine des vents

Démarré par mimo57, Lundi 23 Juillet 2012 à 17:00

« précédent - suivant »

mimo57

Bonjour a tous,

Comme vous le savez, en météorologie, on désigne la direction des vents son origine ce qui pour moi me pose un probleme.
Dans la pratique de mon loisir préféré, je me déplace au grès des vents, alors comme dirait un ami, Je me moque de savoir d'où je viens car ça je le sais, je veux savoir ou je vais.
Donc je souhaiterais modifier ma page internet avec la direction du vent pour qu'elle affiche non seulement la "Vrais" valeur mais aussi son opposé -+180°.
Je pourrais très simplement inverser le sens de la girouette, mais je ne serais plus en adéquation avec les données météo officielles et ne pourrais plus envoyer mes mesures sur xxx site.
Donc le plus simple, serait de faire un calcul dans ma page qui dirait si X < 180° alors Y=Y+180 et si X > 180° alors Y=X-180 (ou un truc du genre.)
Mais comment transcoder ça en langage internet et l'inclure dans ma page  indexT.htm ?

Merci a celui qui ce penchera sur mon probleme.

Yves
****
Si devant le problème tu t\'assieds, jamais tu ne te relèveras !


virusdunil

#1
xxx site :shock:

Drole d'endroit pour envoyer des donnees meteo :mrgreen:  :arrow:

je plaisante mon ami...je vais laisser ma place car moi et le codage on fait pas bon menage :?  :lol:
Station Meteo:Vantage Pro2 cablée,abri Stevensen
Logiciel:Weather Display beta 255 --Detecteur de foudre Nexstorm
Mon site: http://www.meteolacstjean.com/

meteo_jacques

#2
Bonjour Yves,

Une manière de faire serait probablement en javascript.

Tu pourrais faire quelque chose du genre:

Les 2 "cellules" que tu veux travailler doivent avoir un "nom" (un id="...")
<td id="provenance">.....</td>
<td id="destination">.....</td>

et tu fais un petit script de la sorte

<script type="text/javascript">
    vents = document.getElementById("provenance").innerHTML;
    if (vents < 180)
        vents = vents + 180;
    else
        vents = vents - 180;
    document.getElementById("destination").innerHTML = vents;
</script>
Je n'ai pas testé le code, mais question de te donner une piste!

Amicalement,
Jacques

mimo57

#3
Citation de: "meteo_jacques"Bonjour Yves,

Une manière de faire serait probablement en javascript.

Tu pourrais faire quelque chose du genre:

Les 2 "cellules" que tu veux travailler doivent avoir un "nom" (un id="...")
<td id="provenance">.....</td>
<td id="destination">.....</td>

et tu fais un petit script de la sorte

<script type="text/javascript">
    vents = document.getElementById("provenance").innerHTML;
    if (vents < 180)
        vents = vents + 180;
    else
        vents = vents - 180;
    document.getElementById("destination").innerHTML = vents;
</script>
Je n'ai pas testé le code, mais question de te donner une piste!

Amicalement,
Jacques

Merci Jacques et désolé de n'avoir pas répondu avant mais beaucoup de travail a la maison.

J'ai regardé un peu plus près ce bout de code, mais je n'y comprends pas grand chose :(

J'ai donc ajouté ceci: <td id="provenance">Destination</td>
<td id="destina">...</td>
<script type="text/javascript">
vents = document.getElementById("provenance").innerHTML;
if ('<#avgbearing>' < 180)
vents = '<#avgbearing>' + 180;
else
vents = '<#avgbearing>' - 180;
document.getElementById("destina").innerHTML = vents;
</script>

Ca marche, enfin presque j'essaye d'y ajouter l'unité "°" derrière mais il ne veut pas.
De plus je n'arrive pas a saisir le fonctionnement de ce script, pourquoi faut-il 2 "id" a quoi servent-ils ... si quelqu'un d'un peu plus calé que moi (ce sera pas dur) pouvait m'expliquer.

Merci
Yves
****
Si devant le problème tu t\'assieds, jamais tu ne te relèveras !


meteo_jacques

#4
Bonjour Yves,

Ce n'est pas vraiment sorcier, un script dois savoir ou il doit agir.
Comme on met souvent les scripts au tout début, ou à la fin d'une page,
il ne sais pas ou agir; donc il existe plusieurs manières d'indiquer ou agir,
mais le plus commun de tous est le "GetElementById"
(qui pourrais se traduire par "Trouve l'Element Par le Id"). Donc, c'est une
des raisons principales qui font qu'un Id (Identificateur) DOIT etre unique.

Donc, comme tu vois on pose un identificateur unique, sur lequel un javascript
(ou du code CSS de mise en page) peut agir. Alors, on peut travailler sur les
différentes composantes de ce ID; il y en a toute une foulée, mais encore une fois,
je t'indique la plus courante 'InnerHTML" Ce composant indique tout simplement
"Tout code html qui se trouve a l'intérieur du ID"

Donc, je t'ai donné les codes "passe-partout" du javascript qui te permettent
de faire toute une panoplie d'actions sur ton code.

Espérant avoir un peu éclairé ta chandelle!

Amicalement,
Jacques

mimo57

#5
Merci Jacques pour tes explications sur le fonctionnement de ce bout de code.

Mais j'arrive toujours pas à ajouter l'unité " ° " à la fin, tu aurais une petite idée de comment m'y prendre ?

Yves
****
Si devant le problème tu t\'assieds, jamais tu ne te relèveras !


meteo_jacques

#6
Bonjour Yves,

Bien, en javascript la concaténation (prendre plusieurs éléments pour
en faire un tout) se fait tout simplement avec le "+".
Donc, ton code donnerait:

document.getElementById("destina").innerHTML = vents + "&deg;";
(la chaine "&deg;" est le caractère "degré" en code universel html)

Jacques

mimo57

#7
Bonjour Jacques,

Merci, j'avais bien trouvé la chaine à utiliser, mais j'avais omis d'ajouter le ";" à la fin.
Tout fonctionne comme je veux.

Yves

Edit:
CitationTout fonctionne comme je veux.

Enfin presque, dans la page que je souhaite modifier avec ce bout de code, tout est affiché sous forme de liste exemple: <li CLASS="group">Vent</li>
<li>Vitesse Moyenne: <#wspeed> <#windunit>   <#beaufort>  (<#beaudesc>)</li>
<li>Direction: <#wdir> (<#bearingTM>&deg;)</li>
<li>Rafales: <#wgust> <#windunit></li>
[/size]

Problème c'est que si je rajoute le bout de code comme ca :
<li CLASS="group">Vent</li>
<li>Vitesse Moyenne: <#wspeed> <#windunit>   <#beaufort>  (<#beaudesc>)</li>
<li>Direction: <#wdir> (<#bearingTM>&deg;)</li>
<li id="provenance">Destination</li>
<li id="destina">yyyy</li>
<script type="text/javascript">
vents = document.getElementById("provenance").innerHTML;
if ( <#avgbearing> < 180)
vents = <#avgbearing> + 180;
else
vents = <#avgbearing> - 180;
document.getElementById("destina").innerHTML = vents + "&deg;";
</script>
<li>Rafales: <#wgust> <#windunit></li>
[/size]
l'affichage ne ce fait pas sur une ligne, mais deux.
Normale parce que je lui defini 2 <li...>, comment faire pour que les 2 <ID> soient sur la même ligne si c'est possible ?

Merci pour l'aide
****
Si devant le problème tu t\'assieds, jamais tu ne te relèveras !


meteo_jacques

#8
Bonjour Yves,

Première chose, en utilisant la balise <#avgbearing> directement
dans ta condition (IF), tu n'a pas besoin d'aller chercher le contenu de ce ID:

vents = document.getElementById("provenance").innerHTML;

Donc, tu élimines cette ligne (et le LI aassocié) et tu te retrouve avec un seul LI.

Amicalement,
Jacques