IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[MATPLOTLIB]Insertion des courants sur une carte : Too many error to unpack


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut [MATPLOTLIB]Insertion des courants sur une carte : Too many error to unpack
    Bonjour,
    Je tente de modéliser des données météorologiques d'un grib converti en netCDF. Pour ce faire, j'utilise les u-component et v-component.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    from netCDF4 import *
    import datetime as dt
    import numpy as np
    import numpy.ma as ma
    from datetime import date, datetime, timedelta
    import matplotlib.pyplot as plt
     
    nc=Dataset('datasets/essai.nc')
     
    time_var = nc.variables[str('forecast_time0')]
    wave_var = nc.variables['DIST_GDS0_SFC']
    lat = nc.variables['g0_lat_1'][:]
    lon = nc.variables['g0_lon_2'][:]
    uin = nc.variables['UOGRD_GDS0_DBSL'][:]
    vin = nc.variables['VOGRD_GDS0_DBSL'][:]
    plt.quiver(lon[::5], lat[::5], uin[::5], vin[::5], scale=200)
    Et voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Traceback (most recent call last):
      File "nctry.py", line 37, in <module>
        plt.quiver(lon[::5], lat[::5], uin[::5], vin[::5], scale=200)
      File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 2877, in quive
    r
        ret = ax.quiver(*args, **kw)
      File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 6627, in quiver
        q = mquiver.Quiver(self, *args, **kw)
      File "C:\Python27\lib\site-packages\matplotlib\quiver.py", line 394, in __init
    __
        X, Y, U, V, C = _parse_args(*args)
      File "C:\Python27\lib\site-packages\matplotlib\quiver.py", line 356, in _parse
    _args
        nr, nc = U.shape
    ValueError: too many values to unpack
    En faisant des recherches sur internet, je suppose que l'erreur vient du contenu des variables uogrd et vogrd mais je ne sais pas comment les manipuler.
    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut.
    Il y a trop de valeurs. Essaie en tronquant le fichier.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci pour ta réponse,
    J'ai pris un fichier de 120kb à la place des 0.800mb utilisés lors de ma question, et l'erreur m'apparait toujours

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    On ne peut pas savoir pourquoi il y a une erreur sur uin sans avoir le fichier nc.
    A ta place, je contrôlerais les valeurs des 4 tableaux avec un print. Puis leur taille et profil (size and shape).

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Après avoir fait un shape sur chaque variable, j'ai obtenu ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C:\Python27>python nctry.py
    (321,) //lat
    (720,) //lon
    (4, 321, 720) //uin
    (4, 321, 720) //vin
    J'ai donc voulu effectuer un "slice" sur les 1eres valeurs de chaque variable mais cela ne m'affiche qu'une flèche, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    nc=Dataset('datasets/essai.nc')
     
    lat = nc.variables['g0_lat_1']
    lat = np.array(lat)
    lat = lat.shape
    lat = lat[:1]
    lon = nc.variables['g0_lon_2']
    lon = np.array(lon)
    lon = lon.shape
    lon = lon[:1]
    uin = nc.variables['UOGRD_GDS0_DBSL']
    uin = np.array(uin)
    uin = uin.shape
    uin = uin[:1]
    vin = nc.variables['VOGRD_GDS0_DBSL']
    vin = np.array(vin)
    vin = vin.shape
    vin = vin[:1]
     
    lons, lats = np.meshgrid(lon,lat)
     
    plt.quiver(lons, lats, uin, vin)
    plt.show()
    Et ça ne me renvoie qu'une seule flèche. Je ne sélectionne qu'un élément en faisant ça?

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Bonjour.
    C:\Python27>python nctry.py
    (321,) //lat
    (720,) //lon
    (4, 321, 720) //uin
    (4, 321, 720) //vin
    Pourquoi les tableaux uin et vin sont-ils de rang 3 ? A quoi correrspond la première dimension ?

    Je peux te donner un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import numpy as np
    from numpy.random import random_sample
    import matplotlib.pyplot as plt
     
    nb_lat, nb_lon = 5, 9
    X = np.arange(nb_lon)
    Y = np.arange(nb_lat)
    U = np.cos(2*np.pi*random_sample(nb_lat*nb_lon)).reshape(nb_lat,-1)
    V = np.sin(2*np.pi*random_sample(nb_lat*nb_lon)).reshape(nb_lat,-1)
     
    print( X.shape, Y.shape, U.shape, V.shape)
     
    plt.quiver( X, Y, U, V)
    plt.show()
    Les profils :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (9,) (5,) (5, 9) (5, 9)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lat = nc.variables['g0_lat_1']
    lat = np.array(lat)
    lat = lat.shape
    lat = lat[:1]
    ...
    lons, lats = np.meshgrid(lon,lat)
    lat vaut le nombre d'éléments sur la première dimension. Les données lues ont été perdues.
    Comme c'est un scalaire, il n'y a qu'un seul point dans la grille calculée par meshgrid.

Discussions similaires

  1. Créer des boutons aux formes des pays sur une carte
    Par bernards111 dans le forum Flash
    Réponses: 9
    Dernier message: 12/04/2010, 11h19
  2. insert des données sur une autre table
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 18/02/2009, 15h21
  3. envoyer des données sur une carte son
    Par khalifa1 dans le forum DirectX
    Réponses: 1
    Dernier message: 26/10/2007, 17h29
  4. Faire des effets sur une carte (coloration de zones)
    Par breizhgen dans le forum Webdesign & Ergonomie
    Réponses: 9
    Dernier message: 12/03/2007, 16h07
  5. Réponses: 4
    Dernier message: 18/04/2006, 22h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo