public void testEnhanceDefer() throws IOException { NetcdfDataset ncd = NetcdfDataset.openDataset( filename, EnumSet.of(NetcdfDataset.Enhance.ScaleMissing), -1, null, null); VariableDS enhancedVar = (VariableDS) ncd.findVariable("t1"); NetcdfDataset ncdefer = NetcdfDataset.openDataset( filename, EnumSet.of(NetcdfDataset.Enhance.ScaleMissingDefer), -1, null, null); VariableDS deferVar = (VariableDS) ncdefer.findVariable("t1"); Array data = enhancedVar.read(); Array dataDefer = deferVar.read(); System.out.printf("Enhanced="); NCdumpW.printArray(data); System.out.printf("%nDeferred="); NCdumpW.printArray(dataDefer); System.out.printf("%nProcessed="); CompareNetcdf2 nc = new CompareNetcdf2(new Formatter(System.out), false, false, true); assert !nc.compareData(enhancedVar.getShortName(), data, dataDefer, false); IndexIterator ii = dataDefer.getIndexIterator(); while (ii.hasNext()) { double val = deferVar.convertScaleOffsetMissing(ii.getDoubleNext()); ii.setDoubleCurrent(val); } NCdumpW.printArray(dataDefer); assert nc.compareData(enhancedVar.getShortName(), data, dataDefer, false); ncd.close(); ncdefer.close(); }
private void showDeclaration(BeanTableSorted from, boolean isNcml) { Variable v = getCurrentVariable(from); if (v == null) return; infoTA.clear(); if (isNcml) { Formatter out = new Formatter(); try { NCdumpW.writeNcMLVariable(v, out); } catch (IOException e) { e.printStackTrace(); } infoTA.appendLine(out.toString()); } else { infoTA.appendLine(v.toString()); } if (Debug.isSet("Xdeveloper")) { infoTA.appendLine("\n"); infoTA.appendLine("FULL NAME = " + v.getFullName()); infoTA.appendLine("\n"); infoTA.appendLine(v.toStringDebug()); } infoTA.gotoTop(); infoWindow.setTitle("Variable Info"); infoWindow.show(); }
public String getValue() { Array value = att.getValues(); try { return NCdumpW.printArray(value, null, null); } catch (IOException e) { return e.getMessage(); } }
private void showValueDiffs(CoordinateAxis axis) { if (!axis.isNumeric()) return; try { if (axis instanceof CoordinateAxis1D) { CoordinateAxis1D axis1D = (CoordinateAxis1D) axis; double[] mids = axis1D.getCoordValues(); double[] diffs = new double[mids.length]; for (int i = 0; i < mids.length - 1; i++) diffs[i] = mids[i + 1] - mids[i]; printArrays("midpoint differences", mids, diffs); } else if (axis instanceof CoordinateAxis2D) { CoordinateAxis2D axis2D = (CoordinateAxis2D) axis; ArrayDouble.D2 mids = axis2D.getCoordValuesArray(); int[] shape = mids.getShape(); ArrayDouble.D2 diffx = (ArrayDouble.D2) Array.factory(DataType.DOUBLE, new int[] {shape[0], shape[1] - 1}); for (int j = 0; j < shape[0]; j++) { for (int i = 0; i < shape[1] - 1; i++) { double diff = mids.get(j, i + 1) - mids.get(j, i); diffx.set(j, i, diff); } } infoTA.appendLine(NCdumpW.toString(diffx, "diff in x", null)); ArrayDouble.D2 diffy = (ArrayDouble.D2) Array.factory(DataType.DOUBLE, new int[] {shape[0] - 1, shape[1]}); for (int j = 0; j < shape[0] - 1; j++) { for (int i = 0; i < shape[1]; i++) { double diff = mids.get(j + 1, i) - mids.get(j, i); diffy.set(j, i, diff); } } infoTA.appendLine("\n\n\n"); infoTA.appendLine(NCdumpW.toString(diffy, "diff in y", null)); } } catch (Exception e1) { e1.printStackTrace(); infoTA.appendLine(e1.getMessage()); } }
private void showValues(CoordinateAxis axis) { try { if (axis instanceof CoordinateAxis1D && axis.isNumeric()) { CoordinateAxis1D axis1D = (CoordinateAxis1D) axis; printArray("midpoints=", axis1D.getCoordValues()); if (!axis1D.isInterval()) { printArray("edges=", axis1D.getCoordEdges()); } else { printArray("bound1=", axis1D.getBound1()); printArray("bound2=", axis1D.getBound2()); Formatter f = new Formatter(); double[] mid = axis1D.getCoordValues(); double[] b1 = axis1D.getBound1(); double[] b2 = axis1D.getBound2(); for (int i = 0; i < b1.length; i++) { f.format("%f (%f,%f) = %f%n", mid[i], b1[i], b2[i], b2[i] - b1[i]); } infoTA.appendLine(f.toString()); } } else if (axis instanceof CoordinateAxis2D && axis.isNumeric()) { infoTA.appendLine(NCdumpW.printVariableData(axis, null)); showValues2D((CoordinateAxis2D) axis); } else { infoTA.appendLine(NCdumpW.printVariableData(axis, null)); } } catch (IOException e1) { e1.printStackTrace(); infoTA.appendLine(e1.getMessage()); } }
private void showValuesAsDates(CoordinateAxis axis) { String units = axis.getUnitsString(); String cal = getCalendarAttribute(axis); CalendarDateUnit cdu = CalendarDateUnit.of(cal, units); try { infoTA.appendLine(units); infoTA.appendLine(NCdumpW.printVariableData(axis, null)); if (axis.getDataType().isNumeric()) { if (axis instanceof CoordinateAxis2D) { showDates2D((CoordinateAxis2D) axis, cdu); } else if (axis instanceof CoordinateAxis1D) { // 1D showDates1D((CoordinateAxis1D) axis, cdu); } else { // > 2D Array data = axis.read(); IndexIterator ii = data.getIndexIterator(); while (ii.hasNext()) { double val = ii.getDoubleNext(); infoTA.appendLine(makeCalendarDateStringOrMissing(cdu, val)); } } } else { // must be iso dates Array data = axis.read(); Formatter f = new Formatter(); if (data instanceof ArrayChar) { ArrayChar dataS = (ArrayChar) data; ArrayChar.StringIterator iter = dataS.getStringIterator(); while (iter.hasNext()) f.format(" %s%n", iter.next()); infoTA.appendLine(f.toString()); } else if (data instanceof ArrayObject) { IndexIterator iter = data.getIndexIterator(); while (iter.hasNext()) f.format(" %s%n", iter.next()); infoTA.appendLine(f.toString()); } } } catch (Exception ex) { ex.printStackTrace(); infoTA.appendLine(ex.getMessage()); } }
public String getValue() { Array value = att.getValues(); return NCdumpW.toString(value, null, null); }