/** * Constructor. * * @param sa StructureData is always contained in a StructureArray. * @param recno the recno in the StructureArray. */ public StructureDataA(ArrayStructure sa, int recno) { super(sa.getStructureMembers()); this.sa = sa; this.recno = recno; }
/** * Constructor. * * @param sa StructureData is always contained in a StructureArray. * @param recno the recno in the StructureArray. */ public StructureDataA(ArrayStructure sa, int recno) { super(sa.getStructureMembers()); this.sa = sa; this.recno = recno; }
/** * Constructor. * * @param sa StructureData is always contained in a StructureArray. * @param recno the recno in the StructureArray. */ public StructureDataA(ArrayStructure sa, int recno) { super(sa.getStructureMembers()); this.sa = sa; this.recno = recno; }
protected StructureData makeStructureData( ArrayStructure as, int index) { return new StructureDataW( as.getStructureMembers()); }
protected StructureData makeStructureData( ArrayStructure as, int index) { return new StructureDataW( as.getStructureMembers()); }
protected StructureData makeStructureData( ArrayStructure as, int index) { return new StructureDataW( as.getStructureMembers()); }
private StructureMembers.Member findNested(ArrayStructure as, List<String> names, String want) { String name = names.get(0); StructureMembers sm = as.getStructureMembers(); StructureMembers.Member m = sm.findMember(name); if (name.equals(want)) return m; // keep going ArrayStructure nested = (ArrayStructure) m.getDataArray(); names.remove(0); return findNested( nested, names, want); }
/** * Set data for one member, over all structures. * This is used by VariableDS to do scale/offset. * * @param m set data for this StructureMembers.Member. * @param memberArray Array values. */ public void setMemberArray(StructureMembers.Member m, Array memberArray) { m.setDataArray(memberArray); if (memberArray instanceof ArrayStructure) { // LOOK ArrayStructure as = (ArrayStructure) memberArray; m.setStructureMembers( as.getStructureMembers()); } }
/** * Set data for one member, over all structures. * This is used by VariableDS to do scale/offset. * * @param m set data for this StructureMembers.Member. * @param memberArray Array values. */ public void setMemberArray(StructureMembers.Member m, Array memberArray) { m.setDataArray(memberArray); if (memberArray instanceof ArrayStructure) { // LOOK ArrayStructure as = (ArrayStructure) memberArray; m.setStructureMembers(as.getStructureMembers()); } }
/** * Set data for one member, over all structures. * This is used by VariableDS to do scale/offset. * * @param m set data for this StructureMembers.Member. * @param memberArray Array values. */ public void setMemberArray(StructureMembers.Member m, Array memberArray) { m.setDataArray(memberArray); if (memberArray instanceof ArrayStructure) { // LOOK ArrayStructure as = (ArrayStructure) memberArray; m.setStructureMembers( as.getStructureMembers()); } }
TableArrayStructure(NetcdfDataset ds, TableConfig config) { super(ds, config); this.as = config.as; this.dim = new Dimension(config.structName, (int) config.as.getSize(), false); assert (this.as != null); for (StructureMembers.Member m : config.as.getStructureMembers().getMembers()) cols.add(new VariableSimpleAdapter(m)); }
TableArrayStructure(NetcdfDataset ds, TableConfig config) { super(ds, config); assert (config.as != null); this.as = config.as; this.dim = new Dimension(config.structName, (int) config.as.getSize(), false); for (StructureMembers.Member m : config.as.getStructureMembers().getMembers()) cols.put(m.getName(), new VariableSimpleAdapter(m)); }
TableArrayStructure(NetcdfDataset ds, TableConfig config) { super(ds, config); assert (config.as != null); this.as = config.as; this.dim = new Dimension(config.structName, (int) config.as.getSize(), false); for (StructureMembers.Member m : config.as.getStructureMembers().getMembers()) cols.put(m.getName(), new VariableSimpleAdapter(m)); }
public ArrayStructure getArrayStructure(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.STRUCTURE) { ArrayStructure data = (ArrayStructure) m.getDataArray(); // we need to subset this array structure to deal with just the subset for this recno // use "brute force" for now, see if we can finesse later int count = m.getSize(); StructureData[] sdata = new StructureData[count]; for (int i=0; i<count; i++) sdata[i] = data.getStructureData( recnum * count + i); return new ArrayStructureW( data.getStructureMembers(), m.getShape(), sdata); } throw new IllegalArgumentException("Type is " + m.getDataType() + ", must be Structure"); }
public ArrayStructure getArrayStructure(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.STRUCTURE) { ArrayStructure data = (ArrayStructure) m.getDataArray(); // we need to subset this array structure to deal with just the subset for this recno // use "brute force" for now, see if we can finesse later int count = m.getSize(); StructureData[] sdata = new StructureData[count]; for (int i=0; i<count; i++) sdata[i] = data.getStructureData( recnum * count + i); return new ArrayStructureW( data.getStructureMembers(), m.getShape(), sdata); } throw new IllegalArgumentException("Type is " + m.getDataType() + ", must be Structure"); }
public ArrayStructure getArrayStructure(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.STRUCTURE) { ArrayStructure data = (ArrayStructure) m.getDataArray(); // we need to subset this array structure to deal with just the subset for this recno // use "brute force" for now, see if we can finesse later int count = m.getSize(); StructureData[] sdata = new StructureData[count]; for (int i=0; i<count; i++) sdata[i] = data.getStructureData( recnum * count + i); return new ArrayStructureW( data.getStructureMembers(), m.getShape(), sdata); } throw new IllegalArgumentException("Type is " + m.getDataType() + ", must be Structure"); }
/** * @deprecated use StructureDataDeep.copyToArrayBB */ static public ArrayStructureBB makeArrayBB(ArrayStructure as) throws IOException { if (as.getClass().equals(ArrayStructureBB.class)) // no subclasses return (ArrayStructureBB) as; StructureMembers smo = as.getStructureMembers(); StructureMembers sm = new StructureMembers(smo); ArrayStructureBB abb = new ArrayStructureBB(sm, as.getShape()); ArrayStructureBB.setOffsets(sm); try (StructureDataIterator iter = as.getStructureDataIterator()) { while (iter.hasNext()) StructureDataDeep.copyToArrayBB(iter.next(), abb); } return abb; }
static public ArrayStructureBB makeArrayBB(ArrayStructure as) throws IOException { if (as instanceof ArrayStructureBB) return (ArrayStructureBB) as; StructureMembers smo = as.getStructureMembers(); StructureMembers sm = new StructureMembers(smo); ArrayStructureBB abb = new ArrayStructureBB(sm, as.getShape()); ArrayStructureBB.setOffsets(sm); StructureDataIterator iter = as.getStructureDataIterator(); try { while (iter.hasNext()) copyToArrayBB(iter.next(), abb); } finally { iter.finish(); } return abb; }
/** * Turn any ArrayStructure into a ArrayStructureMA * @param from copy from here. If from is a ArrayStructureMA, return it. * @return equivilent ArrayStructureMA * @throws java.io.IOException on error reading a sequence */ static public ArrayStructureMA factoryMA(ArrayStructure from) throws IOException { if (from instanceof ArrayStructureMA) return (ArrayStructureMA) from; StructureMembers tosm = new StructureMembers( new StructureMembers(from.getStructureMembers())); ArrayStructureMA to = new ArrayStructureMA(tosm, from.getShape()); for (StructureMembers.Member m : from.getMembers()) { to.setMemberArray(m.getName(), from.extractMemberArray(m)); } return to; }
@Test public void testNestedStructure() throws java.io.IOException, InvalidRangeException { String filename = testDir+"testNestedStructure.nc"; try (NetcdfFile ncfile = NetcdfFile.open(filename)) { Variable dset = ncfile.findVariable("x"); assert (null != ncfile.findVariable("x")); assert (dset.getDataType() == DataType.STRUCTURE); assert (dset.getRank() == 0); assert (dset.getSize() == 1); ArrayStructure data = (ArrayStructure) dset.read(); StructureMembers.Member m = data.getStructureMembers().findMember("field2"); assert m != null; assert (m.getDataType() == DataType.STRUCTURE); logger.debug("{}", NCdumpW.toString(data, "", null)); } logger.debug("*** testNestedStructure ok"); }