nc_to_obj

nc_to_obj liest eine netCDF-Datendatei oder eine Untermenge einer netCDF-Datendatei in ein UniScript-Objekt (Struktur).

obj = nc_to_obj(ssFilename)
obj = nc_to_obj(ncid)
obj = nc_to_obj(ssFilename, svChannelNames)
obj = nc_to_obj(ncid, svChannelNames)

Returnwert

obj ist ein Objekt mit den Kanälen und drei zusätzlichen Objekten: globals, channel_info und order. globals enthält die globalen Attribute der netCDF-Datei, channel_info enthält für jeden Kanal ein Objekt mit den Kanal-Attributen und order ist ein Objekt, das die Reihenfolge der Kanäle in der netCDF-Datei angibt.

Im Fehlerfall liefert die Funktion den Wert 0.

Parameter

ssFilename

ssFilename ist der Name einer netCDF-Datei oder einer anderen Datendatei.

ncid

ncid ist die Zugriffsnummer einer UniPlot-Datendatei (siehe nc_open oder nc_create). Die Datei muss mit nc_close wieder geschlossen werden. ncid kann alternativ zu ssFilename angegeben werden.

svChannelNames

svChannelNames ist ein Stringvektor mit Kanalnamen, die importiert werden sollen (optional). Falls für svChannelNames der Zahlenwert 0 angegeben wird, kann die Auswahl über ein Dialogfeld erfolgen.

Beispiel

* ssFile = GetRootDirectory() + "samples/test1.xls";
* o = nc_to_obj(ssFile, ["EWGFAK", "Alpha"])
* o
[.
    Alpha = matrix 17 x 1 [88.7, 81.78, 82.76, 88.35, 88.7, ...]
    EWGFAK = matrix 17 x 1 [0.85, 0.86, 0.86, 0.87, 0.87, ...]
    channel_info = [.
        Alpha = [.
            C_format = "%.2lf"
            add_offset = 0
            datatype = "real4"
            long_name = "Alpha [-]"
            scale_factor = 1
            title = "Alpha"
            units = "-"
        ]
        EWGFAK = [.
            C_format = "%.2lf"
            add_offset = 0
            datatype = "real4"
            long_name = "EWGFAK [GRAD]"
            scale_factor = 1
            title = "EWGFAK"
            units = "GRAD"
        ]
    ]
    globals = [.
        Creator = "UniPlot Excel Converter v3"
        Origin = "d:\\uniplot_du\\samples/test1.xls"
        Source = "Uniplot Software GmbH (www.uniplot.de)"
        __XSort__ = 0
        columnseparator = "\\t"
        firstdatarow = 3
        missing_value = 1e+10
    ]
    order = [.
        [1] = "EWGFAK"
        [2] = "Alpha"
    ]
]
object (obj at 0x3400C14)

Example 2

Berechnet den Mittelwert von mehreren NC-Dateien. Die Kanäle müssen alle die gleiche Punktanzahl haben. Es werden nur die Kanäle berücksichtigt, die in der ersten Datei vorhanden sind.

RegisterCommand("NC File", "NC_CalculateMean", "NC-Mean...");
UserBar_Add("NC_CalculateMean");

def NC_CalculateMean()
{
   ssDir = "";
   bMultiselect = TRUE;
   bSortByDate = TRUE;
   bConvertToNC = TRUE;
   svFiles = GetOpenFileName_Data(ssDir, bMultiselect, bSortByDate, bConvertToNC)
   if (svFiles[1] == "") {
      return;
   }
   nFiles = len(svFiles);

   if (nFiles == 1) {
      return svFiles[1];
   }
   obj1 = nc_to_obj(svFiles[1]);
   svChannel = obj1.channel_info.keys("");
   obj1.globals.File1 = svFiles[1];
   for (i in 2:nFiles) {
      objn = nc_to_obj(svFiles[i]);
      for (ssChan in svChannel) {
         if (objn.has_key(ssChan)) {
            if (len(obj1[ssChan]) == len(objn[ssChan])) {
               obj1[ssChan] = obj1[ssChan] + objn[ssChan];
               obj1.channel_info[ssChan].nNC = obj1.channel_info[ssChan].nNC + 1;
            } else {
               log_error("", "NC_CalculateMean", "Channel %s in file %s has different number of points", ssChan, svFiles[i]);
            }
         } else {
            log_error("", "NC_CalculateMean", "Channel %s in file %s not found", ssChan, svFiles[i]);
         }
      }
      obj1.globals[sprintf("File%d", i)] = svFiles[i];
   }
   for (ssChan in svChannel) {
      obj1.channel_info[ssChan].nNC = obj1.channel_info[ssChan].nNC + 1;
      n = obj1.channel_info[ssChan].nNC;
      if (n > 0) {
         obj1[ssChan] = obj1[ssChan] / n;
      }
   }

   svPath = SplitPath(svFiles[1]);
   ssNewFile =  sum(svPath[1:3]) + "_Mean.nc2"
   bRet = nc_from_obj(obj1, ssNewFile);
   log_info("", ssNewFile, "NC-Mean Result. Double Click to open");
   return;
}

History

Version Beschreibung
R2013.6 Beschreibung des Parameters ncid.
5.14.7 Neu.

id-464946