public static void writeFlagCoding(Band band, NFileWriteable ncFile) throws IOException { final FlagCoding flagCoding = band.getFlagCoding(); if (flagCoding != null) { final String[] flagNames = flagCoding.getFlagNames(); ProductData flagValueData = ProductData.createInstance(band.getDataType(), flagNames.length); final StringBuilder meanings = new StringBuilder(); for (int i = 0; i < flagValueData.getNumElems(); i++) { if (meanings.length() > 0) { meanings.append(" "); } String name = flagNames[i]; meanings.append(name); flagValueData.setElemIntAt(i, flagCoding.getFlagMask(name)); } String variableName = ReaderUtils.getVariableName(band); String description = flagCoding.getDescription(); if (description != null) { ncFile.findVariable(variableName).addAttribute("long_name", description); } ncFile.findVariable(variableName).addAttribute(FLAG_MEANINGS, meanings.toString()); final Array maskValues = Array.factory(flagValueData.getElems()); maskValues.setUnsigned(flagValueData.isUnsigned()); ncFile.findVariable(variableName).addAttribute(FLAG_MASKS, maskValues); } }
public void testFlagCoding() { final FlagCoding fc = new FlagCoding("FC"); fc.addFlag("F1", 0x040, ""); fc.addFlag("F2", 0x800, ""); assertEquals(2, fc.getNumAttributes()); assertEquals(0x040, fc.getFlagMask("F1")); assertEquals(0x800, fc.getFlagMask("F2")); testIntValuesAllowedOnly(fc); testScalarValuesAllowedOnly(fc); }
FlagCoding contextFC = new FlagCoding(flagCodingName); for (String flagName : flagNames) { contextFC.addFlag(flagName, srcFC.getFlagMask(flagName), srcFC.getFlag(flagName).getDescription());