/** * Get member data of type short. * * @param m get data from this StructureMembers.Member. Must be of type short. * @return scalar short value */ public short getScalarShort(StructureMembers.Member m) { return sa.getScalarShort(recno, m); }
/** * Get member data of type short. * * @param m get data from this StructureMembers.Member. Must be of type short. * @return scalar short value */ public short getScalarShort(StructureMembers.Member m) { return sa.getScalarShort(recno, m); }
/** * Get member data of type short. * * @param m get data from this StructureMembers.Member. Must be of type short. * @return scalar short value */ public short getScalarShort(StructureMembers.Member m) { return sa.getScalarShort(recno, m); }
@Override public short getScalarShort(int recnum, StructureMembers.Member m) { if ((m.getDataType() != DataType.SHORT) && (m.getDataType() != DataType.ENUM2)) throw new IllegalArgumentException("Type is " + m.getDataType() + ", must be short"); if (m.getDataArray() != null) return super.getScalarShort(recnum, m); int offset = calcOffsetSetOrder(recnum, m); return bbuffer.getShort(offset); }
@Override public short getScalarShort(int recnum, StructureMembers.Member m) { if (!(m.getDataType().getPrimitiveClassType() == short.class)) throw new IllegalArgumentException("Type is "+m.getDataType()+", must be short"); if (m.getDataArray() != null) return super.getScalarShort(recnum, m); int offset = calcOffsetSetOrder(recnum, m); return bbuffer.getShort(offset); }
@Override public short getScalarShort(int recnum, StructureMembers.Member m) { if ((m.getDataType() != DataType.SHORT) && (m.getDataType() != DataType.ENUM2)) throw new IllegalArgumentException("Type is " + m.getDataType() + ", must be short"); if (m.getDataArray() != null) return super.getScalarShort(recnum, m); int offset = calcOffsetSetOrder(recnum, m); return bbuffer.getShort(offset); }
@Override public short getScalarShort(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarShort(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarShort( m.getName()); }
@Override public short getScalarShort(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarShort(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarShort( m.getName()); }
@Override public short getScalarShort(int recnum, StructureMembers.Member m) { if (m.getDataArray() != null) return super.getScalarShort(recnum, m); StructureData sd = getStructureData(recnum); return sd.getScalarShort( m.getName()); }
public long convertScalarLong(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.LONG) return getScalarLong(recnum, m); if (m.getDataType() == DataType.INT) return (long) getScalarInt(recnum, m); if (m.getDataType() == DataType.SHORT) return (long) getScalarShort(recnum, m); if (m.getDataType() == DataType.BYTE) return (long) getScalarByte(recnum, m); Object o = getScalarObject(recnum, m); if (o instanceof Number) return ((Number) o).longValue(); throw new ForbiddenConversionException("Type is " + m.getDataType() + ", not convertible to int"); }
/** * Read nested graphic symbolic structure data * * @param name Variable name, * @param m Structure mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedGraphicSymbolData(String name, StructureMembers.Member m, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { int[] pos = vinfo.pos; int size = pos.length; Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readCircleStructData(name, bos, vinfo); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
public long convertScalarLong(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.LONG) return getScalarLong(recnum, m); if (m.getDataType() == DataType.INT) return (long) getScalarInt(recnum, m); if (m.getDataType() == DataType.SHORT) return (long) getScalarShort(recnum, m); if (m.getDataType() == DataType.BYTE) return (long) getScalarByte(recnum, m); Object o = getScalarObject(recnum, m); if (o instanceof Number) return ((Number) o).longValue(); throw new ForbiddenConversionException("Type is " + m.getDataType() + ", not convertible to int"); }
public long convertScalarLong(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.LONG || m.getDataType() == DataType.ULONG) return getScalarLong(recnum, m); if (m.getDataType() == DataType.INT) return (long) getScalarInt(recnum, m); if (m.getDataType() == DataType.UINT) return DataType.unsignedIntToLong( getScalarInt(recnum, m)); if (m.getDataType() == DataType.SHORT) return (long) getScalarShort(recnum, m); if (m.getDataType() == DataType.USHORT) return (long) DataType.unsignedShortToInt(getScalarShort(recnum, m)); if (m.getDataType() == DataType.BYTE) return (long) getScalarByte(recnum, m); if (m.getDataType() == DataType.UBYTE) return (long) DataType.unsignedByteToShort(getScalarByte(recnum, m)); Object o = getScalarObject(recnum, m); if (o instanceof Number) return ((Number) o).longValue(); throw new ForbiddenConversionException("Type is " + m.getDataType() + ", not convertible to int"); }
/** * Get scalar value as an int, with conversion as needed. Underlying type must be convertible to int. * * @param recnum get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize(); * @param m member Variable. * @return scalar double value * @throws ForbiddenConversionException if not convertible to double. */ public int convertScalarInt(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.INT) return getScalarInt(recnum, m); if (m.getDataType() == DataType.SHORT) return (int) getScalarShort(recnum, m); if (m.getDataType() == DataType.BYTE) return (int) getScalarByte(recnum, m); if (m.getDataType() == DataType.LONG) return (int) getScalarLong(recnum, m); Object o = getScalarObject(recnum, m); if (o instanceof Number) return ((Number) o).intValue(); throw new ForbiddenConversionException("Type is " + m.getDataType() + ", not convertible to int"); }
/** * Get scalar value as an int, with conversion as needed. Underlying type must be convertible to int. * * @param recnum get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize(); * @param m member Variable. * @return scalar double value * @throws ForbiddenConversionException if not convertible to double. */ public int convertScalarInt(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.INT) return getScalarInt(recnum, m); if (m.getDataType() == DataType.SHORT) return (int) getScalarShort(recnum, m); if (m.getDataType() == DataType.BYTE) return (int) getScalarByte(recnum, m); if (m.getDataType() == DataType.LONG) return (int) getScalarLong(recnum, m); Object o = getScalarObject(recnum, m); if (o instanceof Number) return ((Number) o).intValue(); throw new ForbiddenConversionException("Type is " + m.getDataType() + ", not convertible to int"); }
/** * Get scalar value as an int, with conversion as needed. Underlying type must be convertible to int. * * @param recnum get data from the recnum-th StructureData of the ArrayStructure. Must be less than getSize(); * @param m member Variable. * @return scalar double value * @throws ForbiddenConversionException if not convertible to double. */ public int convertScalarInt(int recnum, StructureMembers.Member m) { if (m.getDataType() == DataType.INT || m.getDataType() == DataType.UINT) return getScalarInt(recnum, m); if (m.getDataType() == DataType.SHORT) return (int) getScalarShort(recnum, m); if (m.getDataType() == DataType.USHORT) return DataType.unsignedShortToInt( getScalarShort(recnum, m)); if (m.getDataType() == DataType.BYTE) return (int) getScalarByte(recnum, m); if (m.getDataType() == DataType.UBYTE) return (int) DataType.unsignedByteToShort( getScalarByte(recnum, m)); if (m.getDataType() == DataType.LONG || m.getDataType() == DataType.ULONG) return (int) getScalarLong(recnum, m); Object o = getScalarObject(recnum, m); if (o instanceof Number) return ((Number) o).intValue(); throw new ForbiddenConversionException("Type is " + m.getDataType() + ", not convertible to int"); }
/** * Read nested structure data * * @param name Variable name, * @param memberName mumber name, * @param bos data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedLinkedVectorData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readLinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedWindBarbData(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws IOException, InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readWindBarbData(name, bos, vinfo, null); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(DataType.SHORT, pdata.getShape(), pa); return ay.sectionNoReduce(section); //return asbb; }
/** * Read nested data * * @param name Variable name, * @param memberName Structure mumber name, * @param bos Data buffer, * @param vinfo variable info, * @param section variable section * @return the array of member variable data */ public Array readNestedDataUnlinkVector(String name, String memberName, ByteBuffer bos, Nidsheader.Vinfo vinfo, java.util.List section) throws java.io.IOException, ucar.ma2.InvalidRangeException { Structure pdata = (Structure) ncfile.findVariable(name); ArrayStructure ma = readUnlinkedVectorData(name, bos, vinfo); int size = (int) pdata.getSize(); StructureMembers members = ma.getStructureMembers(); StructureMembers.Member m = members.findMember(memberName); short[] pa = new short[size]; for (int i = 0; i < size; i++) { pa[i] = ma.getScalarShort(i, m); } Array ay = Array.factory(short.class, pdata.getShape(), pa); return ay.sectionNoReduce(section); }
@Ignore("cant deal with BUFR at the moment") @Test public void testNestedTable() throws IOException, InvalidRangeException { String filename = TestDir.cdmLocalTestDataDir + "dataset/nestedTable.bufr"; try (NetcdfFile ncfile = ucar.nc2.dataset.NetcdfDataset.openFile(filename, null)) { logger.debug("Open {}", ncfile.getLocation()); Sequence outer = (Sequence) ncfile.findVariable(BufrIosp2.obsRecord); assert outer != null; try (StructureDataIterator iter = outer.getStructureIterator()) { StructureData data = null; if (iter.hasNext()) data = iter.next(); assert data != null; assert data.getScalarShort("Latitude_coarse_accuracy") == 32767; ArrayStructure as = data.getArrayStructure("Geopotential"); assert as != null; assert as.getScalarShort(0, as.findMember("Wind_speed")) == 61; } } }