2017-05-04 1 views
0

J'utilise NCO dans une invite de commandes Windows 7 pour changer les fichiers Netcdf avec NaN en "valeurs manquantes" normales. J'ai essayé l'approche de this question et suivi ce procedure:NCO - change les valeurs NaN en "valeurs manquantes" normales pour ouvrir Netcdf dans Panoply

ncatted -a _FillValue,,o,f,NaN metoffice_foam1_amm7_NWS_TBED_dm19850101.nc 
ncatted -a _FillValue,,m,f,1.0e36 metoffice_foam1_amm7_NWS_TBED_dm19850101.nc 

Mais quand je tente d'ouvrir le fichier de sortie (metoffice_foam1_amm7_NWS_TBED_dm19850101.nc) dans Panoply, il donne cette erreur: « (...) Axis comprend la valeur NaN (s) "

S'il vous plaît, Qu'est-ce qui ne va pas?

Merci à l'avance

Tiago

Répondre

0

NaN nécessitent une attention particulière. Les commandes ci-dessus peuvent ne pas fonctionner pour les variables qui ne sont pas de type NC_FLOAT. Au lieu d'utiliser les mêmes commandes pour toutes les variables, essayez une version NC_DOUBLE sur toutes les variables qui sont double précision, par exemple,

ncatted -a _FillValue,time,o,d,NaN metoffice_foam1_amm7_NWS_TBED_dm19850101.nc 
ncatted -a _FillValue,time,m,d,1.0e36 metoffice_foam1_amm7_NWS_TBED_dm19850101.nc 

Je serais curieux de voir si cela résout le problème.

0

Désolé, mais cela ne résout pas le problème. J'ai aussi créé un attribut _FillValue pour les dimensions lat et longues avec 1.0e36 valeurs, mais il continue à ne pas travailler sur Panoply, avec cette erreur récurrente:

"There was an error preparing the data: Axis includes NaN value(s)"

Pour mieux vérifier si elle a été une question Panoply, je a essayé d'ouvrir le fichier (après avoir changé le temps, les dimensions lat et avec _FillValue = LON 1.0e36) dans ArcGIS, et a abouti à cette erreur:

"error 000276 : One or both dimensions have variable spacing in their coordinate values. Description: The spacing between x-coordinates and/or y-coordinates is not equal(...)"

Voici l'info du fichier NetCDF Je travaille:

netcdf file:/C:/nco/metoffice_foam1_amm7_NWS_TBED_dm19850101.nc { dimensions: 
    time = UNLIMITED; // (1 currently) 
    lat = 375; 
    lon = 297; variables: 
    double time(time=1); 
     :axis = "T"; 
     :calendar = "Gregorian"; 
     :data_time = 0.0; // double 
     :long_name = "Validity time"; 
     :standard_name = "time"; 
     :units = "seconds since 1985-01-01 00:00:00"; 
     :_FillValue = 1.0E36; // double 
     :_ChunkSizes = 1; // int 

    short votemper(time=1, lat=375, lon=297); 
     :_FillValue = -32768S; // short 
     :missing_value = -32768S; // short 
     :scale_factor = 0.001f; // float 
     :add_offset = 298.15f; // float 
     :standard_name = "sea_water_potential_temperature_at_sea_bed"; 
     :long_name = "Sea Water Potential Temperature at Sea Bed"; 
     :units = "K"; 
     :valid_min = -30000S; // short 
     :valid_max = 30000S; // short 
     :_ChunkSizes = 1, 375, 297; // int 

    float lat(lat=375); 
     :standard_name = "latitude"; 
     :units = "degrees_north"; 
     :valid_min = 40.06667f; // float 
     :valid_max = 65.00125f; // float 
     :long_name = "latitude"; 
     :nav_model = "Default grid"; 
     :axis = "Y"; 
     :_FillValue = 1.0E36; // double 
     :_ChunkSizes = 375; // int 

    float lon(lon=297); 
     :standard_name = "longitude"; 
     :units = "degrees_east"; 
     :valid_min = -19.88889f; // float 
     :valid_max = 12.99967f; // float 
     :long_name = "longitude"; 
     :nav_model = "Default grid"; 
     :axis = "X"; 
     :_FillValue = 1.0E36; // double 
     :_ChunkSizes = 297; // int 

    // global attributes: 
:Conventions = "CF-1.0"; 
:references = "http://www.ncof.co.uk"; 
:institution = "UK Met Office"; 
:netcdf-version-id = "netCDF-4"; 
:creation_date = "2015-03-26 09:01Z"; 
:product_version = "1.0"; 
:source = "UK Met Office Operational Suite, Atlantic Margin Model FOAM 7 km reanalysis"; 
:grid_resolution = "Lat-lon 7 km"; 
:start_date = "1985-01-01"; 
:start_time = "00:00Z"; 
:stop_date = "1985-01-01"; 
:stop_time = "23:59Z"; 
:file_quality_index = 0S; // short 
:nco_openmp_thread_number = 1; // int 
:title = "daily-mean seabed temperature (2D)"; 
:contact = "[email protected]"; 
:history = "Mon May 8 11:21:32 2017: ncatted -a 
_FillValue,lon,m,d,1.0e36 metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nMon May 8 11:21:21 2017: ncatted -a _FillValue,lon,o,d,NaN metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nMon May 8 11:19:53 2017: ncatted -a _FillValue,lat,m,d,1.0e36 metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nMon May 8 11:19:02 2017: ncatted -a _FillValue,lat,o,d,NaN metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nMon May 8 11:12:05 2017: ncatted -a _FillValue,time,m,d,1.0e36 metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nMon May 8 10:45:23 2017: ncatted -a _FillValue,time,o,d,NaN metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nFri May 5 17:06:19 2017: ncatted -a _FillValue,time,m,d,1.0e36 metoffice_foam1_amm7_NWS_TBED_dm19850101.nc\nFri May 5 17:06:05 2017: ncatted -a _FillValue,time,o,d,NaN metoffice_foam1_amm7_NWS_TBED_dm19850101.nc"; 
:NCO = "4.6.7-alpha04"; 
0

Panoply utilise la bibliothèque netCDF-Java pour ouvrir des jeux de données en mode amélioré. Un résultat de ceci est que si une valeur de tableau correspond à une valeur manquante spécifiée, est le _FillValue, est en dehors de la valide_range, ou est autrement "pas bon", puis Panoply voit seulement un NaN. Et la raison pour laquelle vous obtenez l'erreur récurrente "Axis includes NaN (s)" est que Panoply n'aime pas NaNs dans l'axe et ne va tout simplement pas vous laisser tracer le long d'un axe qui les inclut.