Annonce

Réduire
Aucune annonce.

Quand Python joue les météorologues

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Tutoriel Quand Python joue les météorologues


    L'hacking sous toutes ses formes a fait la bonne grâce de notre ami Python. Je pense qu’il a laissé ses lettres de noblesse et s’est fait connaître du grand public.

    Mais sous ses aspects simplistes, il reste néanmoins un langage puissant et aux multiples facettes comme on a pu le voir avec le traducteur. Cette fois on va aller chercher des modules qui vont nous donner la météo et pour cela, on va utiliser le bon Yahoo.

    Il existe pyql-weather, une bibliothèque qui utilise les services de Yahoo pour vérifier la météo, ainsi que des informations supplémentaires telles que les continents, pays, villes, entre autres.



    Pyql-weather est un wrapper (entièrement écrit en Python et publié sous la licence MIT) qui permet d’accèder aux serveurs de conseil et d’information d’YQL Yahoo. Parce qu'il utilise la bibliothèque standard de Python, pyql-weather n'a pas besoin d'autre dépendance que le langage Python installé sur l'ordinateur qui sera exécuté.

    Il possède plusieurs modules qui ont chacun leurs utilités comme :
    1. pyql.geo
    2. pyql.weather




    L’un va donner la géolocalisation du pays et l’autre le temps.



    Le premier module, pyql.geo nous permet de lister les éléments géographiques tels que:


    • Continents
    • océans
    • Les pays
    • Unis
    • villes
    • PlaceFinder Locator (Lieux par la latitude-longitude)





    Le deuxième module, pyql.weather, fournit des informations sur l'état du climat actuel:


    • emplacement
    • astronomie
    • atmosphère
    • vent
    • Les unités de mesure
    • les conditions météorologiques actuelles
    • Prévisions météo pour les 5 prochains jours




    Allez installons-le :



    Code:
    pip install pyql-weather


    On va détailler les éléments qui composent ce module et enfin mettre en place un script simpliste qui permettra de nous donner une météo complète de notre région ou ville.



    J’essaie de donner une vision différente de cet outil puissant



    Voyons déjà l’ensemble des continents que le module englobe en lançant ce petit script :



    Code:
    from pyql.geo.continents import Continent
    continents = Continent.filter()
    for cont in continents:    
        print(cont.name)
    Résultat :

    Africa
    Europe
    South America
    Antarctic
    Asia
    North America
    Australia




    On peut trouver certaines informations sur un pays grâce notamment à la latitude et la longitude (module pyql.geo.placefinder), mais comme j’avais déjà fait des articles sur la géolocalisation je vais passer directement au reste :



    Le module pyql.geo.states donne tous les états d’un pays comme par exemple pour la France :



    Code:
    >>> from pyql.geo.states import State
    
    >>> states = State.filter(place="France")
    
    >>> for state in states:
    
        print(state.name)


    Résultat :

    Centre region

    Limousin

    Poitou-Charentes

    Auvergne

    Burgundy

    Pays de la Loire

    Ile-de-France

    Lower Normandy

    Upper Normandy

    Midi-Pyrenees

    Champagne-Ardenne

    Aquitaine

    Rhone-Alpes

    Picardy

    Franche-Comte

    Languedoc-Roussillon

    Brittany

    Lorraine

    Provence-Alpes-Cote d'Azur

    Nord-Pas-de-Calais

    Alsace

    Corsica




    Les informations météo en utilisant WOEID



    Une partie intégrante de GeoPlanet est le WOEID (où sur la terre IDentifier), un identifiant unique de référence 32-bit, maintenant attribué par Yahoo , qui identifie une caractéristique sur la Terre.


    Voici le lien : http://woeid.rosselliot.co.nz/lookup/



    Il vous suffit d’y entrer le nom d’un état, région, pays, ville pour accéder directement à son WOEID.



    Maintenant que nous avons le moyen d’identifier avec exactitude l’endroit où nous voulons que le script agisse pour donner des informations météorologiques, nous pouvons avancer nos pions ou modules.



    Vous l’avez d’ores et déjà compris le module allez instancier le service Yahoo et plus précisément son service géo localisateur et météo pour nous donner un état général en temps réel de la situation sur un endroit sélectionné.



    On pose :

    Code:
    from pyql.weather.forecast import Forecast
    my_woeid = 628879
    forecast = Forecast.get(woeid=my_woeid, u="c")


    Maintenant que nous avons cet objet en mémoire on va utiliser les données le concernant en exploitant le script ainsi :


    Code:
    print(forecast.location.city)
    
    print(forecast.location.region)
    
    print(forecast.location.country)

    En sortie, vous aurez la ville choisis par le WOEID mais aussi la région et le pays.



    On va aller plus loin :



    Code:
    print("Lever du Soleil: {0}".format(forecast.astronomy.sunrise))
    
    print("Coucher du soleil: {0}".format(forecast.astronomy.sunset))


    Comme le print l’indique, on a le lever et coucher du soleil, intéressant pour les amis pêcheurs.

    Pour identifier l'état actuel de la météo, nous utilisons le même objet comme suit:



    Code:
    print(forecast.item.condition.code)
    
    print(forecast.item.condition.date)
    
    print(forecast.item.condition.temp)
    
    print(forecast.item.condition.text)

    Le résultat est le suivant :

    28Thu, 16 Jun 2016 12:53 pm CDT26Rain



    Yahoo Weather nous permet de connaître les prévisions météo de 5 dates continues (date de consultation, y compris).
    Par exemple: Si nous consultons le temps aujourd'hui 16/06/2016 (jour 1), Yahoo va nous offrir les prévisions pour le jour 17/06/2016 (jour 2), 18/06/2016 (Jour 3) 19/06/2016 (jour 4) et 20/06/2016 (jour 5).



    Nous pouvons voir que le résultat est pyql-temps retourne un tableau d'objets au format JSON qui peuvent être manipulés pour formater les informations comme suit:



    Code:
    from pyql.weather.forecast import Forecast
    
    woeid = 628879
    
    forecast = Forecast.get(woeid=woeid, u="c")
    
    ville = forecast.location.city
    
    region = forecast.location.region
    
    pays = forecast.location.country
    
    print("Condition climatique pour la Ville de {0}, {1}, {2}: \n".format(ville, region, pays))
    
    for day in forecast.item.forecast:
    
        print("Date: {0} {1}".format(day['day'], day['date']))
    
        print("Pronostique: {0} ({1})".format(day['text'], day['code']))
    
        print("Température Minimale: {0}º {1}".format(day['low'], forecast.units.temperature))
    
        print("Température Maximale: {0}º {1}".format(day['high'], forecast.units.temperature))
    
        print("*****************************************************************************")

    Le résultat est bluffant :



    Condition climatique pour la Ville de Toulon, Provence-Alpes-Cote d'Azur, France:



    Date: Thu 16 Jun 2016

    Pronostique: Rain (12)

    Température Minimale: 16º C

    Température Maximale: 21º C

    *****************************************************************************

    Date: Fri 17 Jun 2016

    Pronostique: Mostly Sunny (34)

    Température Minimale: 13º C

    Température Maximale: 22º C

    *****************************************************************************

    Date: Sat 18 Jun 2016

    Pronostique: Scattered Thunderstorms (47)

    Température Minimale: 13º C

    Température Maximale: 21º C

    *****************************************************************************

    Date: Sun 19 Jun 2016

    Pronostique: Scattered Thunderstorms (47)

    Température Minimale: 14º C

    Température Maximale: 22º C

    *****************************************************************************

    Date: Mon 20 Jun 2016

    Pronostique: Partly Cloudy (30)

    Température Minimale: 15º C

    Température Maximale: 22º C

    *****************************************************************************

    Date: Tue 21 Jun 2016

    Pronostique: Partly Cloudy (30)

    Température Minimale: 16º C

    Température Maximale: 21º C

    *****************************************************************************

    Date: Wed 22 Jun 2016

    Pronostique: Mostly Sunny (34)

    Température Minimale: 16º C

    Température Maximale: 22º C

    *****************************************************************************

    Date: Thu 23 Jun 2016

    Pronostique: Mostly Sunny (34)

    Température Minimale: 16º C

    Température Maximale: 23º C

    *****************************************************************************

    Date: Fri 24 Jun 2016

    Pronostique: Sunny (32)

    Température Minimale: 17º C

    Température Maximale: 25º C

    *****************************************************************************

    Date: Sat 25 Jun 2016

    Pronostique: Mostly Sunny (34)

    Température Minimale: 18º C

    Température Maximale: 25º C

    *****************************************************************************




    Python est magique en plus d’être concis, fiable et surtout facile.



    A vos claviers et plus d’excuse pour savoir la météo de demain.



    A bientôt.
Chargement...
X