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 :

erreur lors d'ectraction des valeurs du pixel , lat, long d'un point dans un fichier netCDF4 [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 44
    Par défaut erreur lors d'ectraction des valeurs du pixel , lat, long d'un point dans un fichier netCDF4
    bonjour;

    je suis nouvelle sur les fichier netCDF4 j'ai une application avec wxpython ou je peux lire les fichiers netCDF4 et les visualiser et de sélectionner des points x y des lignes et colonnes : x = col & y = row : x_coord = 89.9877 , y_coord = 35.8141 ( cordonnées sous curseur )

    et les affichers sur une autre fenetres

    ce que j'aimerai faire ces d'avoir des informations sur la long , lat & valeur numérique du pixel dans ce point

    j'ai un code que je comprend pas comment fonctionne

    voilà 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import numpy as np
    import netCDF4
    from netCDF4 import Dataset
     
    fic='air.departure.sig995.2012.nc'
     
    ncdir='/home/data/'
     
    nc_data = netCDF4.Dataset(path+fic,'r')
     
    varnames = nc_data.variables.keys()
     
    x_coord = 89.9877
    y_coord = 35.8141
     
    def ExtractVarsFromNetcdf(x_coord, y_coord, path, varnames):
        """   
        @params:
            x_coord    - Required : the x coordinate of the point
            x_coord    - Required : the y coordinate of the point
            ncdir      - Required : The directory of the netcdf file.
            varnames   - Required : The netcdf variables
        """
     
        with Dataset(ncdir, "r") as nc:
     
            # Get the nc lat and lon from the point's x, y
            lon = nc.variables["lon"][int(round(x_coord))]
            lat = nc.variables["lat"][int(round(y_coord))]
     
            # Return a np.array with the netcdf data
            air_dep = np.ma.getdata(
                [nc.variables[air_dep][:, x_coord, y_coord] for air_dep in varnames]
            )
     
            return air_dep, lon, lat
    quand je l’exécute y'a pas d'erreur mais quand d exécuter cette fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nc_data, lon, lat = ExtractVarsFromNetcdf(89.9877, 35.8141, path+fic, [ air_dep])
    je reçois un erreur que air_dep , lat, mon sont pas définis

    j'aimerai comprendre comment marche ce code svp et ou se trouve l'erreur

    merci d'avance

    merci

  2. #2
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut
    Bonjour,

    j'ai un code que je comprend pas comment fonctionne
    D'où vient ce code ? Peut être voir avec la personne qui a écrit ce code pour lui poser des questions.

    je reçois un erreur que air_dep , lat, mon sont pas définis
    Pouvez vous mettre le message d'erreur en entier, car dans votre code air_dep intervient à différents endroits, ça permettra de mieux comprendre pourquoi vous avez une erreur sur ce paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nc_data, lon, lat = ExtractVarsFromNetcdf(89.9877, 35.8141, path+fic, [ air_dep])
    Pourquoi mettez vous des crochets autour de air_dep ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 44
    Par défaut
    Bonjour,

    bon la personne je pense qu'elle a copie de quelque part puisque il arrive pas a m'expliquer comment ca fonctionne

    voilà 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    In [19]: 
        ...: def ExtractVarsFromNetcdf(x_coord, y_coord, path, varnames):
        ...:     """   
        ...:     @params:
        ...:         x_coord    - Required : the x coordinate of the point
        ...:         x_coord    - Required : the y coordinate of the point
        ...:         ncdir      - Required : The directory of the netcdf file.
        ...:         varnames   - Required : The netcdf variables
        ...:     """
        ...: 
        ...:     with Dataset(ncdir, "r") as nc:
        ...: 
        ...:         # Get the nc lat and lon from the point's x, y
        ...:         lon = nc.variables["lon"][int(round(x_coord))]
        ...:         lat = nc.variables["lat"][int(round(y_coord))]
        ...: 
        ...:         # Return a np.array with the netcdf data
        ...:         air_dep = np.ma.getdata(
        ...:             [nc.variables[air_dep][:, x_coord, y_coord] for air_dep in 
        ...: varnames]
        ...:         )
        ...: 
        ...:         return air_dep, lon, lat
        ...:     
     
    In [20]: nc, lon, lat = ExtractVarsFromNetcdf(89.9877, 35.8141, ncdir, [ air_dep
        ...: ])
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-20-e3b0979e7612> in <module>()
    ----> 1 nc, lon, lat = ExtractVarsFromNetcdf(89.9877, 35.8141, ncdir, [ air_dep])
     
    NameError: name 'air_dep' is not defined
    voilà merci

  4. #4
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nc, lon, lat = ExtractVarsFromNetcdf(89.9877, 35.8141, ncdir, [ air_dep
        ...: ])
    Lorsque vous appelez air_dep dans la fonction il doit être déclaré préalablement, comme vous avez déclaré x_coord, y_coord, path.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 44
    Par défaut
    Bonjour,

    je viens de comprendre comment ça fonctionne merci :

    voilà :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    import numpy as np
     
    from netCDF4 import Dataset
     
     
    x_coord, y_coord = 12.6109, 23.9767
     
    path = 'D:/data/netCDF4/air.departure.sig995.2012.nc'
     
     
    def ExtractVarsFromNetcdf(x_coord, y_coord, path, varnames):
        """
     
        @params:
           x_coord - Required : the x coordinate of the point
           x_coord - Required : the y coordinate of the point
           path+fic - Required : The directory of the netcdf file.
           varnames - Required : The netcdf variables
        """
        with Dataset(path, "r") as nc:
            # Get the nc lat and lon from the point's x, y
            lon = np.ma.getdata(nc.variables["lon"][int(round(x_coord))])
            lat = np.ma.getdata(nc.variables["lat"][int(round(y_coord))])
            # Return a np.array with the netcdf data
            air_dep = np.ma.getdata(nc.variables['air_dep'][0, x_coord , y_coord]) 
     
            return air_dep, lon, lat
     
     
    air_dep, lon, lat = ExtractVarsFromNetcdf(x_coord, y_coord, path, varnames = ['air_dep'])
     
    print(air_dep, lon, lat)
    Merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2014, 16h14
  2. Erreur lors du formattage des dates
    Par Invité dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/06/2008, 15h31
  3. Réponses: 11
    Dernier message: 28/02/2008, 10h44
  4. erreurs lors de passage de valeurs par un struct
    Par Aliveli dans le forum Visual C++
    Réponses: 2
    Dernier message: 15/10/2006, 23h15
  5. Réponses: 2
    Dernier message: 21/05/2006, 14h02

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