/** * public by accident, do not call directly. * @return Array * @throws IOException on error */ @Override public Array reallyRead(Variable client, CancelTask cancelTask) throws IOException { if (isMemberOfStructure()) { // LOOK should be UnsupportedOperationException ?? List<String> memList = new ArrayList<String>(); memList.add(this.getShortName()); Structure s = getParentStructure().select(memList); ArrayStructure as = (ArrayStructure) s.read(); return as.extractMemberArray( as.findMember( getShortName())); } try { return ncfile.readData(this, getShapeAsSection()); } catch (InvalidRangeException e) { e.printStackTrace(); throw new IOException(e.getMessage()); // cant happen haha } }
ArrayStructureMA to = new ArrayStructureMA(new StructureMembers(from.getStructureMembers()), from.getShape()); for (StructureMembers.Member m : from.getMembers()) { to.setMemberArray(m.getName(), from.extractMemberArray(m)); Array array = from.extractMemberArray(m); assert array.getSize() > 0 : "array's size should have been computed in extractMemberArray()."; int firstDimLen = array.getShape()[0];
/** * public by accident, do not call directly. * * @return Array * @throws IOException on error */ @Override public Array reallyRead(Variable client, CancelTask cancelTask) throws IOException { if (isMemberOfStructure()) { // LOOK should be UnsupportedOperationException ?? List<String> memList = new ArrayList<>(); memList.add(this.getShortName()); Structure s = getParentStructure().select(memList); ArrayStructure as = (ArrayStructure) s.read(); return as.extractMemberArray(as.findMember(getShortName())); } try { return ncfile.readData(this, getShapeAsSection()); } catch (InvalidRangeException e) { e.printStackTrace(); throw new IOException(e.getMessage()); // cant happen haha } }
/** * public by accident, do not call directly. * * @return Array * @throws IOException on error */ @Override public Array reallyRead(Variable client, CancelTask cancelTask) throws IOException { if (isMemberOfStructure()) { // LOOK should be UnsupportedOperationException ?? List<String> memList = new ArrayList<>(); memList.add(this.getShortName()); Structure s = getParentStructure().select(memList); ArrayStructure as = (ArrayStructure) s.read(); return as.extractMemberArray(as.findMember(getShortName())); } try { return ncfile.readData(this, getShapeAsSection()); } catch (InvalidRangeException e) { e.printStackTrace(); throw new IOException(e.getMessage()); // cant happen haha } }
Array memberData = attData.extractMemberArray(sm); attContainer.addAttribute(new Attribute(matt.name + "." + sm.getName(), memberData)); String fldName = memberName.substring(0,pos); String attName = memberName.substring(pos+1); Array memberData = attData.extractMemberArray(sm); Variable v = s.findVariable(fldName); if (v == null) continue; // LOOK Array memberData = attData.extractMemberArray(sm); // if so, add the att to the member variable, using the name of the compound attribute v.addAttribute(new Attribute(matt.name, memberData)); // LOOK want to check for missing values.... Array memberData = attData.extractMemberArray(sm); attContainer.addAttribute(new Attribute(matt.name + "." + sm.getName(), memberData));
Array memberData = attData.extractMemberArray(sm); attList.add(new Attribute(matt.name+"."+sm.getName(), memberData)); StructureMembers.Member sm = smember.findMember(v.getShortName()); if (null != sm) { Array memberData = attData.extractMemberArray(sm); v.addAttribute(new Attribute(matt.name, memberData)); Array memberData = attData.extractMemberArray(sm); attList.add(new Attribute(matt.name+"."+sm.getName(), memberData));
Array memberData = attData.extractMemberArray(sm); attContainer.addAttribute(new Attribute(matt.name + "." + sm.getName(), memberData)); String fldName = memberName.substring(0,pos); String attName = memberName.substring(pos+1); Array memberData = attData.extractMemberArray(sm); Variable v = s.findVariable(fldName); if (v == null) continue; // LOOK Array memberData = attData.extractMemberArray(sm); // if so, add the att to the member variable, using the name of the compound attribute v.addAttribute(new Attribute(matt.name, memberData)); // LOOK want to check for missing values.... Array memberData = attData.extractMemberArray(sm); attContainer.addAttribute(new Attribute(matt.name + "." + sm.getName(), memberData));
/** * 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; }
/** * 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; }
public void testReadStructureSubset() throws IOException, InvalidRangeException { Structure record = (Structure) ncfile.findVariable("record"); assert record != null; List<String> vars = new ArrayList<String>(); vars.add( "wind_speed"); vars.add( "wind_gust"); vars.add( "report"); Structure subset = record.select(vars); // read entire subset ArrayStructure dataAll = (ArrayStructure) subset.read(); StructureMembers sm = dataAll.getStructureMembers(); for(StructureMembers.Member m : sm.getMembers()) { Variable v = subset.findVariable(m.getName()); assert v != null; Array mdata = dataAll.extractMemberArray(m); assert mdata.getShape()[0] == dataAll.getShape()[0]; assert mdata.getElementType() == m.getDataType().getPrimitiveClassType(); System.out.println(m.getName()+ " shape="+new Section(mdata.getShape())); } System.out.println("*** TestStructureSubset ok"); }
VariableDS vds = (VariableDS) v2; if (vds.needConvert()) { Array mdata = newAS.extractMemberArray(m); mdata = vds.convert(mdata); newAS.setMemberArray(m, mdata); ArrayObject.D1 seqArray = (ArrayObject.D1) newAS.extractMemberArray(m); ArrayObject.D1 newSeq = new ArrayObject.D1(ArraySequence.class, (int) seqArray.getSize()); Array mdata = newAS.extractMemberArray(m); mdata = innerStruct.convert(mdata, null); newAS.setMemberArray(m, mdata);
VariableDS vds = (VariableDS) v2; if (vds.needConvert()) { Array mdata = newAS.extractMemberArray(m); ArrayObject.D1 seqArray = (ArrayObject.D1) newAS.extractMemberArray(m); ArrayObject.D1 newSeq = (ArrayObject.D1) Array.factory(DataType.SEQUENCE, new int[] {(int) seqArray.getSize()}); Array mdata = newAS.extractMemberArray(m); mdata = innerStruct.convert(mdata, null); newAS.setMemberArray(m, mdata);
VariableDS vds = (VariableDS) v2; if (vds.needConvert()) { Array mdata = newAS.extractMemberArray(m); mdata = vds.convert(mdata); newAS.setMemberArray(m, mdata); ArrayObject.D1 seqArray = (ArrayObject.D1) newAS.extractMemberArray(m); ArrayObject.D1 newSeq = new ArrayObject.D1(ArraySequence.class, (int) seqArray.getSize()); Array mdata = newAS.extractMemberArray(m); mdata = innerStruct.convert(mdata, null); newAS.setMemberArray(m, mdata);
public void testReadStructureSection() throws IOException, InvalidRangeException { Structure record = (Structure) ncfile.findVariable("record"); assert record != null; Structure subset = (Structure) record.section(new Section("0:10")); assert subset != null; assert subset.getRank() == 1; assert subset.getSize() == 11; // read entire subset ArrayStructure dataAll = (ArrayStructure) subset.read(new Section("0:10")); assert dataAll.getSize() == 11; StructureMembers sm =dataAll.getStructureMembers(); for(StructureMembers.Member m : sm.getMembers()) { Variable v = subset.findVariable(m.getName()); assert v != null; Array mdata = dataAll.extractMemberArray(m); assert mdata.getShape()[0] == dataAll.getShape()[0]; assert mdata.getElementType() == m.getDataType().getPrimitiveClassType(); System.out.println(m.getName()+ " shape="+new Section(mdata.getShape())); } System.out.println("*** TestStructureSubset ok"); }