arno974 Posté(e) 28 octobre 2009 Partager Posté(e) 28 octobre 2009 Bonjour, Dans le cadre d'un travail universitaire je dois effectuer une routine qui télécharge et transforme des données grib en shapefile (format SIG). Le but étant à partir d'un Grib utilisant le modèle NWW3 obtenir un fichier vecteur contenant la vitesse et la direction du courant/vagues/vents. Le monde des données météo et océanographiques est relativement nouveau pour moi. Ce qui explique que je sois un peu perdu. En effet, différents sites proposent le téléchargement de données Grib : http://globalmarinenet.com/grib.htm http://nomads.ncep.noaa.gov/ Mon tuteur m'avait conseillé globalmarine. Mais en cherchant un peu, il s'avère que la plupart des fournisseurs de données Grib utilisent directement les données de la NOAA. De ce fait, je n'arrive pas à comprendre la valeur ajoutée qu'apporte ces sites ? Ne serait-il pas plus judicieux que j'utilise celle de la NOAA? De plus, lorsque j'analyse ces données via Degrib il y a deux paramètres que je n'arrive pas à comprendre : UGRD : U component VGRD : V component Sauriez-vous à quoi ils correspondent? Merci pour vos réponses Lien à poster Partager sur d’autres sites More sharing options...
snowman43 Posté(e) 28 octobre 2009 Le Puy en Velay Partager Posté(e) 28 octobre 2009 Ce sont des vecteurs. Lien à poster Partager sur d’autres sites More sharing options...
arno974 Posté(e) 28 octobre 2009 Auteur Partager Posté(e) 28 octobre 2009 Ce sont des vecteurs. Bonjour snowman49, Dans ce cas si je me réfère au cahier de spécification de Grib wind : http://polar.ncep.noaa.gov/waves/products.html Quelle est la différence entre WDIR, WIND, UGRD et VGRD? Concernant les autre sites proposant des données similaires aurais-tu plus d'informations quant à leur valeur ajoutée? Merci Arnaud Lien à poster Partager sur d’autres sites More sharing options...
Marc09 Posté(e) 28 octobre 2009 Toulouse (31) Partager Posté(e) 28 octobre 2009 Bonjour snowman49, Dans ce cas si je me réfère au cahier de spécification de Grib wind : http://polar.ncep.noaa.gov/waves/products.html Quelle est la différence entre WDIR, WIND, UGRD et VGRD? Bonjour Arno974, Tout d'abord, les 4 termes WDIR, WIND, UGRD et VGRD sont des vecteurs comme l'a dit snowman plus haut. WDIR représente la direction du vent en degrés (0 à 360°) WIND représente la vitesse du vent en m/s (1 m/s = 3,6 km/h) On sait que le vent est une mesure de la vitesse de déplacement horizontal de l'air par rapport à la Terre. Tout déplacement horizontal peut être décrit par deux composantes, une composante pour le déplacement parallèle à un cercle de latitude, le vent zonal, noté u, et une composante parallèle à un méridien, le vent méridien, noté v. Les mouvements zonaux sont comptés positivement (v>0) s'ils sont d'ouest en est. Les mouvements méridiens sont comptés positivement (u>0) s'ils sont dirigés du sud vers le nord. UGRD représente donc la composante du vent zonal en m/s VGRD représente la composante du vent méridien en m/s J'espère avoir été clair dans mon explication /emoticons/smile@2x.png 2x" width="20" height="20"> Lien à poster Partager sur d’autres sites More sharing options...
arno974 Posté(e) 28 octobre 2009 Auteur Partager Posté(e) 28 octobre 2009 Bonjour Arno974, Tout d'abord, les 4 termes WDIR, WIND, UGRD et VGRD sont des vecteurs comme l'a dit snowman plus haut. WDIR représente la direction du vent en degrés (0 à 360°) WIND représente la vitesse du vent en m/s (1 m/s = 3,6 km/h) On sait que le vent est une mesure de la vitesse de déplacement horizontal de l'air par rapport à la Terre. Tout déplacement horizontal peut être décrit par deux composantes, une composante pour le déplacement parallèle à un cercle de latitude, le vent zonal, noté u, et une composante parallèle à un méridien, le vent méridien, noté v. Les mouvements zonaux sont comptés positivement (v>0) s'ils sont d'ouest en est. Les mouvements méridiens sont comptés positivement (u>0) s'ils sont dirigés du sud vers le nord. UGRD représente donc la composante du vent zonal en m/s VGRD représente la composante du vent méridien en m/s J'espère avoir été clair dans mon explication /emoticons/smile@2x.png 2x" width="20" height="20"> Plus que clair même. Merci pour ces explications. Je patauge un peu, c'est pourquoi certaine questions vous paraitront peut être un peu confuses. Dans ce cas n'hésitez pas à me le faire remarquer. Je suis plus habitué aux lignes de code et aux cartes topologiques qu'à interpréter des cartes marines /emoticons/tongue@2x.png 2x" width="20" height="20"> 1/ Je rebondis sur ton explication. Dans l'hypothèse où je n'ai que UGRD et VGRD et que je souhaite trouver la vitesse et la direction, les deux formules ci-dessous sont-elles correctes : vitesse du courant = sqrt(u²+v²) direction = atan(v,u) J'effectue ces calculs en python et je suis étonné d'avoir des directions négatives. 2/ De plus, toujours concernant les fournisseurs de données, dites-moi si je me trompe, mais la seule valeur ajoutée qu'apportent des sites comme global marine sont le fait de découper le Grib de la NOAA par zone afin de diminuer le poids de celui-ci? 3/ Enfin le modèle Wwave 3 n'étant pas adapté pour les mers intérieurs. Quel modèle me conseilleriez-vous? Sachant que Global Marine utilise dans ce cas le modèle GFS. Lien à poster Partager sur d’autres sites More sharing options...
Marc09 Posté(e) 28 octobre 2009 Toulouse (31) Partager Posté(e) 28 octobre 2009 Honnêtement là je suis largué. Mais que veux tu dire par direction négatives. Un truc du genre -36° ? Lien à poster Partager sur d’autres sites More sharing options...
Comode Posté(e) 29 octobre 2009 Partager Posté(e) 29 octobre 2009 J'effectue ces calculs en python et je suis étonné d'avoir des directions négatives. Ca remonte a assez loi, mais j'avais été confronté au problème en PHP (pour le même problème que toi sur des data quickscat) et avait également des valeurs négatives... Bref, de tête, j'avais du faire une fonction de ce style : function GetAngle($x, $y){ if($x == 0 && $y == 0) return 360; return $x < 0 ? atan2($x,$y) + 2*pi() : atan2($x,$y); } Il faut en fait se méfier de 2 choses : - la fonction fonctionne dans le sens trigonométrique, donc anti-horaire, alors qu'on mesure un cap dans le sens horaire. Pour résoudre le problème, il suffit d'inverser les parametres de la fonction atan (qui sont d'ailleurs inversé de base en PHP, puisque c'est y,x et non x,y) - L'angle 0 (ou 360) correspond en trigo au cap 090... A partir de cette fonction, le cap peut être déduit simplement en faisant 360 * GetAngle(u, v) / (2 * PI); Pour tes 2 autres question, je ne saurais pas trop dire vu que je connais pas tes autres fournisseurs... Je suppose qu'en effet leur valeur ajoutée est de fournir des fichiers zonaux, ce qui ne serait pas en soit un mauvais point quand on voit qu'il faut 200Mo / echeance pour un GFS 0.5 en GRIB1 et environ la moitié en grib2... Si tu veux toutes les échéances jusqu'à 300+ heures et ce 4 fois par jour, ça risque de piquer niveau bande passante pour GFS brut de décoffrage... Par contre, il ne m'a pas semblé voir les données de houle dans les grib GFS. Edit : je connais rien au python, mais j'ai vérifié ça fonctionne exactement pareil qu'en PHP... Donc tu as bien une fonction atan2(y, x), et à la syntaxe près, la fonction ci-dessus doit le faire ! Lien à poster Partager sur d’autres sites More sharing options...
guich.fr Posté(e) 29 octobre 2009 Partager Posté(e) 29 octobre 2009 Ca remonte a assez loi, mais j'avais été confronté au problème en PHP (pour le même problème que toi sur des data quickscat) et avait également des valeurs négatives... Bref, de tête, j'avais du faire une fonction de ce style : function GetAngle($x, $y){ if($x == 0 && $y == 0) return 360; return $x < 0 ? atan2($x,$y) + 2*pi() : atan2($x,$y); } Il faut en fait se méfier de 2 choses : - la fonction fonctionne dans le sens trigonométrique, donc anti-horaire, alors qu'on mesure un cap dans le sens horaire. Pour résoudre le problème, il suffit d'inverser les parametres de la fonction atan (qui sont d'ailleurs inversé de base en PHP, puisque c'est y,x et non x,y) - L'angle 0 (ou 360) correspond en trigo au cap 090... A partir de cette fonction, le cap peut être déduit simplement en faisant 360 * GetAngle(u, v) / (2 * PI); Pour tes 2 autres question, je ne saurais pas trop dire vu que je connais pas tes autres fournisseurs... Je suppose qu'en effet leur valeur ajoutée est de fournir des fichiers zonaux, ce qui ne serait pas en soit un mauvais point quand on voit qu'il faut 200Mo / echeance pour un GFS 0.5 en GRIB1 et environ la moitié en grib2... Si tu veux toutes les échéances jusqu'à 300+ heures et ce 4 fois par jour, ça risque de piquer niveau bande passante pour GFS brut de décoffrage... Par contre, il ne m'a pas semblé voir les données de houle dans les grib GFS. Edit : je connais rien au python, mais j'ai vérifié ça fonctionne exactement pareil qu'en PHP... Donc tu as bien une fonction atan2(y, x), et à la syntaxe près, la fonction ci-dessus doit le faire ! Pour poursuivre sur tout ça, je te conseil de porter ceci dans une class, pour beaucoup plus de lisibilité, d'éviter le condition/test de la forme A ? B : C (non déboguable), de toujours mettre des accolades derrière des instructions (if, else, while ...) même si celles-ci font qu'une seule ligne car elle te seront bien utiles pour déboguer ton code, et d'indenter ton code, pour la clarté. Sinon, Comode a tout dit. /emoticons/wink@2x.png 2x" width="20" height="20"> Lien à poster Partager sur d’autres sites More sharing options...
arno974 Posté(e) 30 octobre 2009 Auteur Partager Posté(e) 30 octobre 2009 Pour poursuivre sur tout ça, je te conseil de porter ceci dans une class, pour beaucoup plus de lisibilité, d'éviter le condition/test de la forme A ? B : C (non déboguable), de toujours mettre des accolades derrière des instructions (if, else, while ...) même si celles-ci font qu'une seule ligne car elle te seront bien utiles pour déboguer ton code, et d'indenter ton code, pour la clarté. Sinon, Comode a tout dit. /emoticons/wink@2x.png 2x" width="20" height="20"> Merci à tous pour vos réponses. Je pense être arrivé à un résultat satisfaisant. j'attends un retour maintenant des spécialistes pour voir si cela leur convient. Pour la partie programmation : Concernant les accolades, en python c'est une chance il n'y en a aucune mais par contre l'indentation est obligatoire. En python tout étant objet, cela rend l'utilisation de classe quasi naturelle. Pour l'opérateur ternaire cela dépend des habitudes. C'est plus concis mais en tout cas personnellement, j'ai un peu de mal à l'utiliser. Encore un grand merci, pour votre réactivité. Arnaud Lien à poster Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant