private static void addIndexCoding(Product product) { final IndexCoding indexCoding = new IndexCoding("Indexes"); indexCoding.addIndex("land", 12, "Land Index"); indexCoding.addIndex("bright", 13, "Bright Index"); product.getIndexCodingGroup().add(indexCoding); }
/** * Copies the given source index coding to the target product * If it exists already, the method simply returns the existing instance. * * @param sourceIndexCoding the source index coding * @param target the target product * * @return The index coding. */ public static IndexCoding copyIndexCoding(IndexCoding sourceIndexCoding, Product target) { IndexCoding indexCoding = target.getIndexCodingGroup().get(sourceIndexCoding.getName()); if (indexCoding == null) { indexCoding = new IndexCoding(sourceIndexCoding.getName()); indexCoding.setDescription(sourceIndexCoding.getDescription()); target.getIndexCodingGroup().add(indexCoding); copyMetadata(sourceIndexCoding, indexCoding); } return indexCoding; }
public void testIndexCoding() { final IndexCoding ic = new IndexCoding("IC"); ic.addIndex("I1", 100, ""); ic.addIndex("I2", 300, ""); assertEquals(2, ic.getNumAttributes()); assertEquals(100, ic.getIndexValue("I1")); assertEquals(300, ic.getIndexValue("I2")); testIntValuesAllowedOnly(ic); testScalarValuesAllowedOnly(ic); }
private static IndexCoding createIndexCoding(String indexCodingName, int[] flagValues, String[] flagNames) { if (flagValues != null && flagNames != null && flagValues.length == flagNames.length) { final IndexCoding coding = new IndexCoding(indexCodingName); for (int i = 0; i < flagValues.length; i++) { final String sampleName = flagNames[i]; final int sampleValue = flagValues[i]; coding.addSample(sampleName, sampleValue, ""); } if (coding.getNumAttributes() > 0) { return coding; } } return null; } }
private static void addIndexCoding(Product product, IndexCoding indexCoding, String indexCodingName) { final IndexCoding targetIndexCoding = new IndexCoding(indexCodingName); targetIndexCoding.setDescription(indexCoding.getDescription()); ProductUtils.copyMetadata(indexCoding, targetIndexCoding); product.getIndexCodingGroup().add(targetIndexCoding); }
public static void writeIndexCoding(IndexCoding indexCoding, NVariable variable) throws IOException { final String[] indexNames = indexCoding.getIndexNames(); final int[] indexValues = new int[indexNames.length]; final StringBuilder meanings = new StringBuilder(); for (int i = 0; i < indexValues.length; i++) { String name = indexNames[i]; meanings.append(name).append(" "); indexValues[i] = indexCoding.getIndexValue(name); } variable.addAttribute(FLAG_MEANINGS, meanings.toString().trim()); variable.addAttribute(FLAG_VALUES, Array.factory(indexValues)); }
@Test public void testCopyIndexCoding() { final IndexCoding originalIndexCoding = new IndexCoding("sesame street characters"); originalIndexCoding.addIndex("erni", 0, "erni character"); originalIndexCoding.addIndex("bert", 1, "bert character"); final Product product = new Product("S", "S", 0, 0); ProductUtils.copyIndexCoding(originalIndexCoding, product); final ProductNodeGroup<IndexCoding> indexCodingGroup = product.getIndexCodingGroup(); assertNotNull(indexCodingGroup); assertEquals(1, indexCodingGroup.getNodeCount()); final IndexCoding actualIndexCoding = indexCodingGroup.get("sesame street characters"); assertNotNull(actualIndexCoding); assertNotSame(originalIndexCoding, actualIndexCoding); assertMetadataAttributeEqualityInt(originalIndexCoding.getIndex("erni"), actualIndexCoding.getIndex("erni")); assertMetadataAttributeEqualityInt(originalIndexCoding.getIndex("bert"), actualIndexCoding.getIndex("bert")); // try to copy the same coding a second time ProductUtils.copyIndexCoding(originalIndexCoding, product); assertEquals(1, indexCodingGroup.getNodeCount()); }
@Override public void visit(IndexCoding indexCoding) { visitedList.add(indexCoding.getName()); }
private void writeIndexCoding(IndexCoding indexCoding, NVariable variable) throws IOException { CfIndexCodingPart.writeIndexCoding(indexCoding, variable); final String[] indexNames = indexCoding.getIndexNames(); final StringBuilder descriptions = new StringBuilder(); for (String indexName : indexNames) { final MetadataAttribute index = indexCoding.getIndex(indexName); if (index != null) { final String description = index.getDescription(); if (description != null) { descriptions.append(description); } } descriptions.append(DESCRIPTION_SEPARATOR); } variable.addAttribute(INDEX_DESCRIPTIONS, descriptions.toString().trim()); variable.addAttribute(INDEX_CODING_NAME, indexCoding.getName()); }
final IndexCoding indexCoding = band.getIndexCoding(); if (indexCoding != null) { final String[] indexNames = indexCoding.getIndexNames(); if (rowIndex < indexNames.length) { final int indexValue = indexCoding.getAttributeIndex(indexCoding.getIndex(indexNames[rowIndex])); final double frequency = frequencies[indexValue]; return frequency / stx.getSampleCount(); Band band = (Band) raster; final IndexCoding indexCoding = band.getIndexCoding(); if (indexCoding != null && rowIndex < indexCoding.getSampleCount()) { final String text = indexCoding.getAttributeAt(rowIndex).getDescription(); return text != null ? text : "";
private void addSampleCoding(Product product, String tagNameSampleCoding, String tagNameSampleElements, String tagNameSampleName, String tagNameSampleValue, String tagNameSampleDescription) { final List children = getRootElement().getChildren(tagNameSampleCoding); for (Object aChildren : children) { final Element flagCodingElem = (Element) aChildren; final String codingName = flagCodingElem.getAttributeValue(DimapProductConstants.ATTRIB_NAME); final SampleCoding sampleCoding; if (tagNameSampleElements.equals(DimapProductConstants.TAG_INDEX)) { final IndexCoding indexCoding = new IndexCoding(codingName); product.getIndexCodingGroup().add(indexCoding); sampleCoding = indexCoding; } else { final FlagCoding flagCoding = new FlagCoding(codingName); product.getFlagCodingGroup().add(flagCoding); sampleCoding = flagCoding; } addSamples(tagNameSampleElements, tagNameSampleName, tagNameSampleValue, tagNameSampleDescription, flagCodingElem, sampleCoding); } }
private static IndexCoding readIndexCoding(Variable variable, String indexCodingName) throws ProductIOException { final IndexCoding indexCoding = CfIndexCodingPart.readIndexCoding(variable, indexCodingName); if (indexCoding != null) { final Attribute descriptionsAtt = variable.findAttributeIgnoreCase(INDEX_DESCRIPTIONS); if (descriptionsAtt != null) { final String[] descriptions = descriptionsAtt.getStringValue().split(DESCRIPTION_SEPARATOR); if (indexCoding.getNumAttributes() == descriptions.length) { for (int i = 0; i < descriptions.length; i++) { indexCoding.getAttributeAt(i).setDescription(descriptions[i]); } } } final Attribute nameAtt = variable.findAttributeIgnoreCase(INDEX_CODING_NAME); if (nameAtt != null) { indexCoding.setName(nameAtt.getStringValue()); } } return indexCoding; } }
assertEquals("classification", indexCoding.getName()); assertArrayEquals(new String[]{"classA", "classB"}, indexCoding.getIndexNames());
public static void addCenterToIndexCoding(IndexCoding indexCoding, Band[] sourceBands, double[][] means) { NumberFormat numberFormat = NumberFormat.getInstance(); numberFormat.setMaximumFractionDigits(3); final int numAttributes = indexCoding.getNumAttributes(); for (int i = 0; i < numAttributes; i++) { MetadataAttribute attribute = indexCoding.getAttributeAt(i); String description = "Cluster " + i + ", Center("; for (int j = 0; j < sourceBands.length; j++) { String number = numberFormat.format(means[i][j]); description += sourceBands[j].getName() + "=" + number; if (j != sourceBands.length - 1) { description += ", "; } } description += ")"; attribute.setDescription(description); } }
private void testIndexCoding(Band indexBand, final int expectedIndices) { assertTrue(indexBand.isIndexBand()); assertEquals(expectedIndices, indexBand.getIndexCoding().getNumAttributes()); final ColorPaletteDef paletteDef = indexBand.getImageInfo(ProgressMonitor.NULL).getColorPaletteDef(); assertEquals(expectedIndices, paletteDef.getNumColors()); final Color[] colors = paletteDef.getColors(); assertNotSame(0, colors[0].getRed() | colors[0].getGreen() | colors[0].getBlue()); assertNotSame(0, colors[1].getRed() | colors[1].getGreen() | colors[1].getBlue()); assertNotSame(0, colors[2].getRed() | colors[2].getGreen() | colors[2].getBlue()); assertNotSame(0, colors[3].getRed() | colors[3].getGreen() | colors[3].getBlue()); }
private static void setIndexCoding(Band band, IndexCoding indexCoding, boolean rename, String pattern) { if (indexCoding != null) { String indexCodingName = indexCoding.getName(); if (rename) { indexCodingName = pattern.replace(SOURCE_NAME_REFERENCE, indexCodingName); } final Product product = band.getProduct(); if (!product.getIndexCodingGroup().contains(indexCodingName)) { addIndexCoding(product, indexCoding, indexCodingName); } band.setSampleCoding(product.getIndexCodingGroup().get(indexCodingName)); } }
private static void addSampleCodingOrMasksIfApplicable(Product p, Band band, Variable variable, String sampleCodingName, boolean msb) { Attribute flagMeanings = variable.findAttribute("flag_meanings"); if (flagMeanings == null) { flagMeanings = variable.findAttribute("flag_meaning"); } if (flagMeanings == null) { return; } final Attribute flagMasks = variable.findAttribute("flag_masks"); final Attribute flagValues = variable.findAttribute("flag_values"); if (flagMasks != null && flagValues == null) { if (!p.getFlagCodingGroup().contains(sampleCodingName)) { final FlagCoding flagCoding = new FlagCoding(sampleCodingName); addSamples(flagCoding, flagMeanings, flagMasks, msb); p.getFlagCodingGroup().add(flagCoding); } band.setSampleCoding(p.getFlagCodingGroup().get(sampleCodingName)); } else if (flagMasks == null && flagValues != null) { if (!p.getIndexCodingGroup().contains(sampleCodingName)) { final IndexCoding indexCoding = new IndexCoding(sampleCodingName); addSamples(indexCoding, flagMeanings, flagValues, msb); p.getIndexCodingGroup().add(indexCoding); } band.setSampleCoding(p.getIndexCodingGroup().get(sampleCodingName)); } else if (flagMasks != null && flagMasks.getLength() == flagValues.getLength()) { addMasks(p, band, flagMeanings, flagMasks, flagValues, msb); } }
private static ImageInfo createIndexedImageInfo(Product product, Band band, IndexColorModel colorModel) { final IndexCoding indexCoding = new IndexCoding("color_map"); final int colorCount = colorModel.getMapSize(); final ColorPaletteDef.Point[] points = new ColorPaletteDef.Point[colorCount]; for (int j = 0; j < colorCount; j++) { final String name = String.format("I%3d", j); indexCoding.addIndex(name, j, ""); points[j] = new ColorPaletteDef.Point(j, new Color(colorModel.getRGB(j)), name); } product.getIndexCodingGroup().add(indexCoding); band.setSampleCoding(indexCoding); return new ImageInfo(new ColorPaletteDef(points, points.length)); }
protected void addIndexCodingsToProduct(Product product) { final ProductNodeGroup<IndexCoding> indexCodingGroup = getSourceProduct().getIndexCodingGroup(); for (int i = 0; i < indexCodingGroup.getNodeCount(); i++) { IndexCoding sourceIndexCoding = indexCodingGroup.get(i); IndexCoding destIndexCoding = new IndexCoding(sourceIndexCoding.getName()); destIndexCoding.setDescription(sourceIndexCoding.getDescription()); cloneIndexes(sourceIndexCoding, destIndexCoding); product.getIndexCodingGroup().add(destIndexCoding); } }