public int[] getShapeNotScalar() { if (isScalar()) return new int[]{1}; return getShape(); }
private Array convertStringToChar(Array data, Variable ncVar) { String s = (String) data.getObject(Index.scalarIndexImmutable); int total = (int) ncVar.getSize(); char[] storage = new char[total]; int len = Math.min( s.length(), total); for (int k=0; k<len; k++) storage[k] = s.charAt(k); return Array.factory( DataType.CHAR, ncVar.getShape(), storage); }
public int[] getShapeAll() { if (getParentStructure() == null) return getShape(); List<Dimension> dimAll = getDimensionsAll(); int[] shapeAll = new int[dimAll.size()]; for (int i=0; i<dimAll.size(); i++) shapeAll[i] = dimAll.get(i).getLength(); return shapeAll; }
public float[] readData() throws IOException { Array allData = null; int[] shape = sweepVar.getShape(); int[] origind = new int[sweepVar.getRank()]; try { allData = sweepVar.read(origind, shape); } catch (InvalidRangeException e) { throw new IOException(e.getMessage()); } return (float[]) allData.get1DJavaArray(float.class); }
public float[] readData() throws IOException { Array allData = null; int[] shape = sweepVar.getShape(); int[] origind = new int[sweepVar.getRank()]; try { allData = sweepVar.read(origind, shape); } catch (InvalidRangeException e) { throw new IOException(e.getMessage()); } return (float[]) allData.get1DJavaArray(float.class); }
public float[] readData() throws IOException { Array allData = null; int[] shape = sweepVar.getShape(); int[] origind = new int[sweepVar.getRank()]; try { allData = sweepVar.read(origind, shape); } catch (InvalidRangeException e) { throw new IOException(e.getMessage()); } return (float[]) allData.get1DJavaArray(float.class); }
private Dorade2Variable(NetcdfDataset nds, VariableSimpleIF v, Variable v0) { super(v.getShortName(), v0.getAttributes()); sweeps = new ArrayList(); nsweeps = 0; name = v.getShortName(); int[] shape = v0.getShape(); int count = v0.getRank() - 1; int ngates = shape[count]; count--; int nrays = shape[count]; sweeps.add( new Dorade2Sweep(v0, 0, nrays, ngates)) ; }
@Test public void testAggVarShape() { for (Variable var : new Variable[]{varScan, varExplicit}) { Assert.assertEquals(3, var.getShape(0)); Assert.assertEquals(21, var.getShape(1)); Assert.assertEquals(6, var.getShape(2)); Assert.assertEquals(39, var.getShape(3)); Assert.assertEquals(45, var.getShape(4)); } }
public long readToByteChannel(ucar.nc2.Variable v2, Section section, WritableByteChannel channel) throws java.io.IOException, ucar.ma2.InvalidRangeException { if (v2 instanceof Structure) return readRecordData((Structure) v2, section, channel); N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) : new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section); return readData(layout, dataType, channel); }
@Override public long readToByteChannel(ucar.nc2.Variable v2, Section section, WritableByteChannel channel) throws java.io.IOException, ucar.ma2.InvalidRangeException { if (v2 instanceof Structure) return readRecordData((Structure) v2, section, channel); N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) : new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section); return readData(layout, dataType, channel); }
@Override public long readToByteChannel(ucar.nc2.Variable v2, Section section, WritableByteChannel channel) throws java.io.IOException, ucar.ma2.InvalidRangeException { if (v2 instanceof Structure) return readRecordData((Structure) v2, section, channel); N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); Layout layout = (!v2.isUnlimited()) ? new LayoutRegular(vinfo.begin, v2.getElementSize(), v2.getShape(), section) : new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, v2.getShape(), section); return readData(layout, dataType, channel); }
private void makeCoordinateData(Variable elev, Variable azim, DoradeSweep mySweep) { Object ele = (Object) mySweep.getElevations(); Object azi = (Object) mySweep.getAzimuths(); Array elevData = Array.factory( elev.getDataType().getPrimitiveClassType(), elev.getShape(), ele); Array aziData = Array.factory( azim.getDataType().getPrimitiveClassType(), azim.getShape(), azi); elev.setCachedData( elevData, false); azim.setCachedData( aziData, false); }
private void makeCoordinateData(Variable elev, Variable azim, DoradeSweep mySweep) { Object ele = (Object) mySweep.getElevations(); Object azi = (Object) mySweep.getAzimuths(); Array elevData = Array.factory( elev.getDataType().getPrimitiveClassType(), elev.getShape(), ele); Array aziData = Array.factory( azim.getDataType().getPrimitiveClassType(), azim.getShape(), azi); elev.setCachedData( elevData, false); azim.setCachedData( aziData, false); }
private Array readData(ucar.nc2.Variable v2, long dataPos, List<Range> ranges, int[] levels) throws IOException, InvalidRangeException { // Get to the proper offset and read in the data raf.seek(dataPos); int data_size = (int) (raf.length() - dataPos); byte[] data = new byte[data_size]; raf.readFully(data); // Turn it into an array Array array = makeArray(data, levels, v2.getShape()); return array.sectionNoReduce(ranges); }
@Override public long[] computeChunking(Variable v) { // use entire if small enough long size = v.getSize() * v.getElementSize(); if (size < DEFAULT_CHUNKSIZE) return convert(v.getShape()); // all of it if (v.isUnlimited()) return _computeChunkingUnlimited(v); return _computeChunking(v); }
void addVariableAsMember(NetcdfDataset ds, String scalarVariableName) throws IOException { if (scalarVariableName == null) return; Variable v = ds.findVariable(scalarVariableName); if (v == null) return; StructureMembers.Member m = this.members.addMember(v.getFullName(), null, null, v.getDataType(), v.getShape()); setMemberData(m, v.read()); } }
private ucar.ma2.Array readNestedData(ucar.nc2.Variable v2, Section section) throws java.io.IOException, ucar.ma2.InvalidRangeException { N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); // construct the full shape for use by RegularIndexer int[] fullShape = new int[v2.getRank() + 1]; fullShape[0] = header.numrecs; // the first dimension System.arraycopy(v2.getShape(), 0, fullShape, 1, v2.getRank()); // the remaining dimensions Layout layout = new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, fullShape, section); Object dataObject = readData(layout, dataType); return Array.factory(dataType, section.getShape(), dataObject); }
private ucar.ma2.Array readNestedData(ucar.nc2.Variable v2, Section section) throws java.io.IOException, ucar.ma2.InvalidRangeException { N3header.Vinfo vinfo = (N3header.Vinfo) v2.getSPobject(); DataType dataType = v2.getDataType(); // construct the full shape for use by RegularIndexer int[] fullShape = new int[v2.getRank() + 1]; fullShape[0] = header.numrecs; // the first dimension System.arraycopy(v2.getShape(), 0, fullShape, 1, v2.getRank()); // the remaining dimensions Layout layout = new LayoutRegularSegmented(vinfo.begin, v2.getElementSize(), header.recsize, fullShape, section); Object dataObject = readData(layout, dataType); return Array.factory(dataType.getPrimitiveClassType(), section.getShape(), dataObject); }
static private ArrayStructure sectionArrayStructure(ParsedSectionSpec child, ArrayStructure innerData, StructureMembers.Member m) throws IOException, InvalidRangeException { StructureMembers membersw = new StructureMembers(m.getStructureMembers()); // no data arrays get propagated ArrayStructureW result = new ArrayStructureW(membersw, child.section.getShape()); int count = 0; Section.Iterator iter = child.section.getIterator(child.v.getShape()); while (iter.hasNext()) { int recno = iter.next(); StructureData sd = innerData.getStructureData(recno); result.setStructureData(sd, count++); } return result; }
static public void testVarMatchesData( Variable v, boolean showStatus) throws IOException { Array data = v.read(); assert data.getSize() == v.getSize(); assert data.getElementType() == v.getDataType().getPrimitiveClassType(); assert data.getRank() == v.getRank(); int[] dataShape = data.getShape(); int[] varShape = v.getShape(); for (int i=0; i<data.getRank(); i++) assert dataShape[i] == varShape[i]; if (showStatus) logger.debug( "**** testReadData done on {}", v.getFullName()); } }