/** * Print array as undifferentiated sequence of values. * * @param ma any Array except ArrayStructure * @param out print to here */ static public void printArray(Array ma, PrintWriter out) { ma.resetLocalIterator(); while (ma.hasNext()) { out.print(ma.next()); out.print(' '); } }
/** * Print array as undifferentiated sequence of values. * * @param ma any Array except ArrayStructure * @param out print to here */ static public void printArray(Array ma, PrintWriter out) { ma.resetLocalIterator(); while (ma.hasNext()) { out.print(ma.next()); out.print(' '); } }
/** * Print array as undifferentiated sequence of values. * * @param ma any Array except ArrayStructure * @param out print to here */ static public void printArrayPlain(Array ma, PrintWriter out) { ma.resetLocalIterator(); while (ma.hasNext()) { out.print(ma.next()); out.print(' '); } }
int addVlens(Array va) { int total = 0; if (va instanceof ArrayObject) { while (va.hasNext()) { Object inner = va.next(); assert (inner instanceof Array); total += addVlens((Array) inner); } } else { vlens.add((int) va.getSize()); total += va.getSize(); } return total; }
private int countMissing(Array data) { int count = 0; while (data.hasNext()) { float val = data.nextFloat(); if (val == N3iosp.NC_FILL_FLOAT) { count++; } } logger.debug(" missing= {}/{}", count, data.getSize()); return count; }
public static Array convert2Unpacked(Array packed, ScaleOffset scaleOffset) { Array result = Array.factory(DataType.DOUBLE, packed.getShape()); IndexIterator riter = result.getIndexIterator(); while (packed.hasNext()) { riter.setDoubleNext( packed.nextDouble() * scaleOffset.scale + scaleOffset.offset); } return result; }
public static Array convert2Unpacked(Array packed, ScaleOffset scaleOffset) { //boolean isUnsigned = packed.isUnsigned(); Array result = Array.factory(DataType.DOUBLE, packed.getShape()); IndexIterator riter = result.getIndexIterator(); while (packed.hasNext()) { riter.setDoubleNext( packed.nextDouble() * scaleOffset.scale + scaleOffset.offset); } return result; }
public static Array convert2Unpacked(Array packed, ScaleOffset scaleOffset) { //boolean isUnsigned = packed.isUnsigned(); Array result = Array.factory(DataType.DOUBLE, packed.getShape()); IndexIterator riter = result.getIndexIterator(); while (packed.hasNext()) { riter.setDoubleNext( packed.nextDouble() * scaleOffset.scale + scaleOffset.offset); } return result; }
private void processVariable(Variable v, Array mdata, Counter count) throws IOException { String name = v.getShortName(); String units = v.getUnitsString(); Attribute bwAtt = v.findAttribute("BUFR:bitWidth"); int bitWidth = bwAtt == null ? 0 : bwAtt.getNumericValue().intValue(); if (showData) out.format("%svar='%s' units='%s' : ", indent, name, units); mdata.resetLocalIterator(); while (mdata.hasNext()) { count.nvals++; if (v.getDataType().isUnsigned()) { if (isMissingUnsigned(v, mdata, bitWidth)) count.nmiss++; } else { if (isMissing(v, mdata, bitWidth)) count.nmiss++; } } if (showData) out.format("%n"); }
public static Array convert2packed(Array unpacked, double missingValue, int nbits, boolean isUnsigned, DataType packedType) { MAMath.ScaleOffset scaleOffset = calcScaleOffsetSkipMissingData(unpacked, missingValue, nbits, isUnsigned); Array result = Array.factory(packedType, unpacked.getShape()); IndexIterator riter = result.getIndexIterator(); while (unpacked.hasNext()) { double uv = unpacked.nextDouble(); double pv = (uv - scaleOffset.offset) / scaleOffset.scale; riter.setDoubleNext( pv); } return result; }
public static Array convert2packed(Array unpacked, double missingValue, int nbits, DataType packedType) { MAMath.ScaleOffset scaleOffset = calcScaleOffsetSkipMissingData(unpacked, missingValue, nbits); Array result = Array.factory(packedType, unpacked.getShape()); IndexIterator riter = result.getIndexIterator(); while (unpacked.hasNext()) { double uv = unpacked.nextDouble(); double pv = (uv - scaleOffset.offset) / scaleOffset.scale; riter.setDoubleNext( pv); } return result; }
public static Array convert2packed(Array unpacked, double missingValue, int nbits, boolean isUnsigned, DataType packedType) { MAMath.ScaleOffset scaleOffset = calcScaleOffsetSkipMissingData(unpacked, missingValue, nbits, isUnsigned); Array result = Array.factory(packedType, unpacked.getShape()); IndexIterator riter = result.getIndexIterator(); while (unpacked.hasNext()) { double uv = unpacked.nextDouble(); double pv = (uv - scaleOffset.offset) / scaleOffset.scale; riter.setDoubleNext( pv); } return result; }
protected Array convertEnums(Array values) { DataType dt = DataType.getType(values.getElementType()); if (!dt.isNumeric()) System.out.println("HEY !dt.isNumeric()"); Array result = Array.factory(DataType.STRING, values.getShape()); IndexIterator ii = result.getIndexIterator(); values.resetLocalIterator(); while (values.hasNext()) { String sval = lookupEnumString(values.nextInt()); ii.setObjectNext(sval); } return result; } }
protected Array convertEnums(Array values) { DataType dt = DataType.getType(values.getElementType()); if (!dt.isNumeric()) System.out.println("HEY !dt.isNumeric()"); Array result = Array.factory(DataType.STRING, values.getShape()); IndexIterator ii = result.getIndexIterator(); values.resetLocalIterator(); while (values.hasNext()) { String sval = lookupEnumString(values.nextInt()); ii.setObjectNext(sval); } return result; } }
private Array convertEnums(Array values) { if (!values.getDataType().isIntegral()) { return values; // Nothing to do! } Array result = Array.factory(DataType.STRING, values.getShape()); IndexIterator ii = result.getIndexIterator(); values.resetLocalIterator(); while (values.hasNext()) { String sval = lookupEnumString(values.nextInt()); ii.setObjectNext(sval); } return result; }
@Test public void testNBits0() throws IOException { // Tests of GRIB2 nbits=0; should be reference value (0.0), not missing value String filename = TestDir.cdmUnitTestDir + "formats/grib2/SingleRecordNbits0.grib2"; logger.debug("testNBits0: {}", filename); try (NetcdfFile ncfile = NetcdfFile.open(filename, null)) { Variable v = ncfile.findVariableByAttribute(null, Grib.VARIABLE_ID_ATTNAME, "VAR_0-1-194_L1"); assert v != null : ncfile.getLocation(); Array vals = v.read(); while (vals.hasNext()) { assert 0.0 == vals.nextDouble(); } } }
@org.junit.Test public void testEndian() throws IOException { try (NetcdfFile ncfile = NetcdfFile.open(TestN4reading.testDir + "endianTest.nc4")) { Variable v = ncfile.findVariable("TMP"); assert v != null; assert v.getDataType() == DataType.FLOAT; Array data = v.read(); assert data.getElementType() == float.class; //large values indicate incorrect inflate or byte swapping while (data.hasNext()) { float val = data.nextFloat(); assert Math.abs(val) < 100.0 : val; } } }
@Test public void testAggCoordVar() throws IOException { NetcdfFile ncfile = gds.getNetcdfFile(); Variable time = ncfile.findVariable("time"); assert null != time; assert time.getShortName().equals("time"); assert time.getRank() == 1 : time.getRank(); assert time.getShape()[0] == 3; assert time.getDataType() == DataType.STRING : time.getDataType(); assert time.getDimension(0) == ncfile.findDimension("time"); int count = 0; String[] want = new String[]{"2005-11-22 22:19:53Z", "2005-11-22 23:19:53Z", "2005-11-23 00:19:59Z"}; Array data = time.read(); assert (data instanceof ArrayObject); while (data.hasNext()) assert want[count++].equals(data.next()); }
@Test public void testScaling2() throws Exception { DatasetUrl durl = DatasetUrl.findDatasetUrl(location+"fine.ncml"); NetcdfFile ncfile = NetcdfDataset.acquireFile(durl, null); // make sure that scaling is applied VariableDS vs = (VariableDS) ncfile.findVariable("hs"); Array data = vs.read("0,1,:,:)"); while (data.hasNext()) { float val = data.nextFloat(); if (!vs.isMissing(val)) assert (val < 10.0) : val; //System.out.printf("%f %n",val); } ncfile.close(); }
@Test public void testUnsigned() throws IOException { try (NetcdfFile ncfile = NetcdfDataset.openDataset(TestDir.cdmLocalTestDataDir + "testUnsignedByte.ncml")) { Variable v = ncfile.findVariable("bvar"); Assert.assertNotNull(v); Assert.assertEquals(DataType.FLOAT, v.getDataType()); // has float scale_factor boolean hasSigned = false; Array data = v.read(); while (data.hasNext()) { float b = data.nextFloat(); if (b < 0) hasSigned = true; } Assert.assertTrue(!hasSigned); } }