public void testW(String url, String sname, boolean isScalar) throws IOException, InvalidRangeException { NetcdfFile ncfile = NetcdfDataset.openFile(url, null); Structure v = (Structure) ncfile.findVariable(sname); assert v != null; assert( v.getDataType() == DataType.STRUCTURE); Array data = v.read(); assert( data instanceof ArrayStructure); assert(data.getElementType() == StructureData.class); new UtilsTestStructureArray().testArrayStructure( (ArrayStructure) data); ncfile.close(); }
public void testBB() throws IOException, InvalidRangeException { NetcdfFile ncfile = TestDir.openFileLocal("testWriteRecord.nc"); ncfile.sendIospMessage(NetcdfFile.IOSP_MESSAGE_ADD_RECORD_STRUCTURE); Structure v = (Structure) ncfile.findVariable("record"); assert v != null; assert( v.getDataType() == DataType.STRUCTURE); Array data = v.read(); assert( data instanceof ArrayStructure); assert( data instanceof ArrayStructureBB); assert(data.getElementType() == StructureData.class); test.testArrayStructure( (ArrayStructure) data); ncfile.close(); }
public void testMA() throws IOException, InvalidRangeException { NetcdfFile ncfile = TestDir.openFileLocal("jan.nc"); NetcdfDataset ncd = new NetcdfDataset( ncfile); Dimension dim = ncd.findDimension("time"); assert dim != null; Structure p = new ucar.nc2.dataset.StructurePseudoDS( ncd, null, "Psuedo", null, dim); assert( p.getDataType() == DataType.STRUCTURE); Array data = p.read(); assert( data instanceof ArrayStructure); assert( data instanceof ArrayStructureMA); assert(data.getElementType() == StructureData.class); test.testArrayStructure( (ArrayStructure) data); ncfile.close(); }
static NcStreamProto.Structure.Builder encodeStructure(Structure s) throws IOException { NcStreamProto.Structure.Builder builder = NcStreamProto.Structure.newBuilder(); builder.setName(s.getShortName()); builder.setDataType(convertDataType(s.getDataType())); for (Dimension dim : s.getDimensions()) builder.addShape(encodeDim(dim)); for (Attribute att : s.getAttributes()) builder.addAtts(encodeAtt(att)); for (Variable v : s.getVariables()) { if (v instanceof Structure) builder.addStructs(NcStream.encodeStructure((Structure) v)); else builder.addVars(NcStream.encodeVar(v, -1)); } return builder; }
static NcStreamProto.Structure.Builder encodeStructure(Structure s) throws IOException { NcStreamProto.Structure.Builder builder = NcStreamProto.Structure.newBuilder(); builder.setName(s.getShortName()); builder.setDataType(encodeDataType(s.getDataType())); for (Dimension dim : s.getDimensions()) builder.addShape(encodeDim(dim)); for (Attribute att : s.getAttributes()) builder.addAtts(encodeAtt(att)); for (Variable v : s.getVariables()) { if (v instanceof Structure) builder.addStructs(NcStream.encodeStructure((Structure) v)); else builder.addVars(NcStream.encodeVar(v, -1)); } return builder; }
static NcStreamProto.Structure.Builder encodeStructure(Structure s) throws IOException { NcStreamProto.Structure.Builder builder = NcStreamProto.Structure.newBuilder(); builder.setName(s.getShortName()); builder.setDataType(encodeDataType(s.getDataType())); for (Dimension dim : s.getDimensions()) builder.addShape(encodeDim(dim)); for (Attribute att : s.getAttributes()) builder.addAtts(encodeAtt(att)); for (Variable v : s.getVariables()) { if (v instanceof Structure) builder.addStructs(NcStream.encodeStructure((Structure) v)); else builder.addVars(NcStream.encodeVar(v, -1)); } return builder; }
public void testStructureIterator() throws IOException, InvalidRangeException { NetcdfFile ncfile = NetcdfFile.open(TestDir.cdmUnitTestDir + "ft/station/Surface_METAR_20080205_0000.nc"); ncfile.sendIospMessage(NetcdfFile.IOSP_MESSAGE_ADD_RECORD_STRUCTURE); Structure v = (Structure) ncfile.findVariable("record"); assert v != null; assert (v.getDataType() == DataType.STRUCTURE); int count = 0; try (StructureDataIterator si = v.getStructureIterator()) { while (si.hasNext()) { StructureData sd = si.next(); count++; } } assert count == v.getSize(); ncfile.close(); } }