.. highlightlang:: us .. index:: nc_to_obj .. _nc_to_obj: nc_to_obj ========= .. us.tag nc_to_obj NOTREADYGERMAN nc.tools New5147 Changed5506 :ref:`nc_to_obj` liest eine netCDF-Datendatei oder eine Untermenge einer netCDF-Datendatei in ein UniScript-Objekt (Struktur). .. function:: obj = nc_to_obj(ssFilename) obj = nc_to_obj(ncid) obj = nc_to_obj(ssFilename, svChannelNames) obj = nc_to_obj(ncid, svChannelNames) .. us.return **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. .. us.params **Parameter** .. uparam:: ssFilename *ssFilename* ist der Name einer netCDF-Datei oder einer anderen Datendatei. .. uparam:: ncid *ncid* ist die Zugriffsnummer einer UniPlot-Datendatei (siehe :ref:`nc_open` oder :ref:`nc_create`). Die Datei muss mit :ref:`nc_close` wieder geschlossen werden. *ncid* kann alternativ zu *ssFilename* angegeben werden. .. uparam:: 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. .. us.example **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 = "FEV Software and Testing Solutions 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; } .. us.history **History** .. list-table:: :header-rows: 1 * - Version - Beschreibung * - R2013.6 - Beschreibung des Parameters *ncid*. * - 5.14.7 - Neu. .. seealso:: :ref:`uberblick-netcdf-dateien`, :ref:`nc_from_obj`, :ref:`NC_Edit`, :ref:`NC_GetVarNames` :sub:`id-464946`