Aide extraction de données

Eléphanteau du PHP | 43 Messages

21 nov. 2008, 18:07

Bonjour,

Alors voilà, je vous explique, mon "problème". Je souhaite extraire les données contenues dans les 2 tableaux suivants sur cette page web : ici

C'est à dire : Jour, Heure, Pression, Temp. Z850...etc. sachant que les données "Picto" ne m'intéressent pas trop. En effet je voudrais ces données pour établir mes propres prévisions sur mon site avec ces données extraites.

Je ne vous demande pas la solution, mais juste comment m'y prendre, car là je suis un peu bloqué.

PS : le webmaster du site est d'accords il m'a dit de parser le contenu html des météogrammes pour en récupéré les données mais je sais pas comment faire..

A bientôt
Modifié en dernier par Dosix le 22 nov. 2008, 18:14, modifié 1 fois.
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 nov. 2008, 14:45

Tu peux utiliser des fonctions telles que fopen() ou file() pour ouvrir une page sur le net et en lire le code source à l'aide de php. Ceci te permet donc de récupérer tout le code html présent sur la page (comme lorsque tu fais "afficher la source" depuis ton navigateur)

Une fois que tu as récupéré ce contenu, il te faut le "parser", c'est à dire parcourir le code html que tu auras récupérer pour aller y retrouver les données dont tu as besoin. Tu peux faire cela de nombreuses manières et tout dépend de la structure de la page et des données que tu veux récupérer.
Tu peux utiliser des strpos() et substr() pour repérer et couper les parties de la chaine (du code html) qui t'interessent. Tu peux aussi creuser du côté des expressions régulières pour définir un masque de recherche, ou trouver une autre solution qui te conviendra mieux pour parser une chaine :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 43 Messages

22 nov. 2008, 18:17

D'accord merci pour les astuces

Néanmoins d'après ce que j'ai pu lire les expressions régulières seraient le mieux approprier pour ce que je cherche mais je les comprends pas :( donc je vais cherché du coté des strpos() et substr() pour déjà ce que j'obtiens et ce que je peux faire.

PS : j'ai éditer le lien du sujet car il ne marchait pas donc maintenant on voit ce que je cherche :wink:
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Eléphanteau du PHP | 43 Messages

23 nov. 2008, 19:36

Enfin de compte j'ai utilisé les expressions régulières même si je les comprends pas trop bien donc voici ce que j'obtiens : ici

Le seul problème c'est que les données de la dernière colonne j'ai un "/" que je n'arrive pas à séparé, même avec substr() enfin je pense que c'est moi qui c'est pas bien l'utilisé.

Si quelqu'un à une idée je suis prennant.
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 nov. 2008, 00:18

Y a plein de façon de t'en débarasser :
- tu peux le supprimer en le remplacant par une chaine vide (str_replace())
- tu peux le couper avec un substr() et un strlen()-1 pour récupérer la chaine sans le dernier caractère
- tu peux le dégager avec une expression régulière et un preg_replace()
- tu dois même pouvoir t'en sortir avec un explode()

Bref, c'est pas les solutions qui manquent, faut juste choisir celle qui te convient :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 43 Messages

16 déc. 2008, 14:59

Bonjour,

Je vais ré utilisé mon poste pour éviter d'un ouvrir un autre avec presque le même sujet.

Donc, voilà je suis en train de réalisé une série de scripts PHP pour téléchargé et extraire des données météo contenues dans les fichiers grib2 de la NOAA (National Oceanic and Atmospheric Administration) pour faire des prévisions automatiques, météogramme et différentes autres choses comme les cartes et les graphiques.

Je vais essayé de vous posez mon problème le plus simplement possible, j'extrais ces données dans des fichiers .txt

Code : Tout sélectionner

lon,lat,UGRD 300 mb d=2008121318 3 hour fcst 354.000000,43.000000,28.7 354.500000,43.000000,26.3 355.000000,43.000000,24.2 355.500000,43.000000,22.7 356.000000,43.000000,21.8 356.500000,43.000000,21.3 357.000000,43.000000,20.6 357.500000,43.000000,19.6 358.000000,43.000000,18.4 358.500000,43.000000,17 359.000000,43.000000,15.6 359.500000,43.000000,15
Donc, voici un très petit bout de ce que j'obtiens par exemple ici nous retrouvons la longitude, latitude et la donnée (ici c'est le vecteur U pour la vitesse et direction du vent à 300 hPa). Après on retrouve l'échéance +03h (3 hour fcst). Mon but c'est que l'utilisateur entre ces coordonnées décimales et en fonction de ce qu'il rentre ça lui affiche les données correspondantes.

Mon problème et que je vais jusqu'a l'échéance 48h et j'enregistre dans une base de données toute les 03h avec dans cette échéance 29 donnée (température à 2m, pression au niveau de la mer, humidité et pleins d'autres.

Donc j'obtiens une table de ce style :

Code : Tout sélectionner

CREATE TABLE `data_03` ( `ID` mediumint(9) NOT NULL AUTO_INCREMENT, `LAT` text NOT NULL, `LONG` text NOT NULL, `UGRD_300` text NOT NULL, `VGRD_300` text NOT NULL, `HGT_500` text NOT NULL, `TMP_500` text NOT NULL, `HGT_700` text NOT NULL, `TMP_700` text NOT NULL, `VVEL_700` text NOT NULL, `HGT_850` text NOT NULL, `TMP_850` text NOT NULL, `TMP_900` text NOT NULL, `TMP_925` text NOT NULL, `TMP_950` text NOT NULL, `TMP_975` text NOT NULL, `TMP_1000` text NOT NULL, `TMP_2M` text NOT NULL, `RH_2M` text NOT NULL, `TMAX_2M` text NOT NULL, `TMIN_2M` text NOT NULL, `UGRD_10M` text NOT NULL, `VGRD_10M` text NOT NULL, `CPRAT_SURFACE` text NOT NULL, `ACPCP_SURFACE` text NOT NULL, `LFTX_SURFACE` text NOT NULL, `CAPE_SURFACE` text NOT NULL, `TCDC_BC` text NOT NULL, `TCDC_MC` text NOT NULL, `TCDC_HC` text NOT NULL, `PRMSL` text NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Donc sa c'est pour l'échéance 03h et après j'ai data_06, data_09...etc.

Donc moi je voudrais afficher toutes les données de chaque table (donc échéance) en fonction de LAT et LONG qui se trouve aussi sur toute les autres tables, mais de différentes échéances.

PS : Chaque échéance vient des fichiers .txt, je peux faire 1 fichiers pour 1 seul échéance contenant toute les données de cette échéance.

Si vous avez une idée pour optimisé et une solution.

je recherche pas forcément la solution écrite mais une explication pour que je puisse le faire moi même.

Après j'aurai surement encore besoin de vous pour généré des cartes de ce style : http://www.meteociel.com/modeles_gfs/run/3-580.GIF?16-6

Merci et à bientôt :wink:
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net

Eléphanteau du PHP | 43 Messages

18 déc. 2008, 16:40

Personne n'a d'idée ? :cry:
Météo Gironde : la météo en Gironde et en Aquitaine : Dordogne, Landes, Lot et Garonne et Pyrénées Atlantique. Préventions des phénomènes violents en Aquitaine.

www.meteo-gironde.net