public void addBandMetadata(Product product) throws ProductIOException { Group group = ncFile.findGroup("Geophysical_Data"); if (productReader.getProductType() == SeadasProductReader.ProductType.Level2_Aquarius) { group = ncFile.findGroup("Aquarius_Data"); } if (productReader.getProductType() == SeadasProductReader.ProductType.Level1B_HICO) { group = ncFile.findGroup("products"); } if (group != null) { final MetadataElement bandAttributes = new MetadataElement("Band_Attributes"); List<Variable> variables = group.getVariables(); for (Variable variable : variables) { final String name = variable.getShortName(); final MetadataElement sdsElement = new MetadataElement(name + ".attributes"); final int dataType = getProductDataType(variable); final MetadataAttribute prodtypeattr = new MetadataAttribute("data_type", dataType); sdsElement.addAttribute(prodtypeattr); bandAttributes.addElement(sdsElement); final List<Attribute> list = variable.getAttributes(); for (Attribute varAttribute : list) { addAttributeToElement(sdsElement, varAttribute); } } final MetadataElement metadataRoot = product.getMetadataRoot(); metadataRoot.addElement(bandAttributes); } }
private static void readCalibrationLUT( final File file, final String lutName, final MetadataElement root, final boolean flipLUT) throws IOException { if (!file.exists()) return; final org.jdom.Document xmlDoc = XMLSupport.LoadXML(file.getAbsolutePath()); final Element rootElement = xmlDoc.getRootElement(); final Element offsetElem = rootElement.getChild("offset"); final double offset = Double.parseDouble(offsetElem.getValue()); final Element gainsElem = rootElement.getChild("gains"); double[] gainsArray = StringUtils.toDoubleArray(gainsElem.getValue().trim(), " "); if (flipLUT) { double tmp; for (int i = 0; i < gainsArray.length / 2; i++) { tmp = gainsArray[i]; gainsArray[i] = gainsArray[gainsArray.length - i - 1]; gainsArray[gainsArray.length - i - 1] = tmp; } } final MetadataElement lut = new MetadataElement(lutName); root.addElement(lut); final MetadataAttribute offsetAttrib = new MetadataAttribute("offset", ProductData.TYPE_FLOAT64); offsetAttrib.getData().setElemDouble(offset); lut.addAttribute(offsetAttrib); final MetadataAttribute gainsAttrib = new MetadataAttribute("gains", ProductData.TYPE_FLOAT64, gainsArray.length); gainsAttrib.getData().setElems(gainsArray); lut.addAttribute(gainsAttrib); }
private void handleMetadataGroup(Group group, MetadataElement metadataElement) throws ProductIOException { List<Variable> variables = group.getVariables(); for (Variable variable : variables) { final String name = variable.getShortName(); final int dataType = getProductDataType(variable); Array array; try { array = variable.read(); } catch (IOException e) { throw new ProductIOException(e.getMessage()); } final ProductData data = ProductData.createInstance(dataType, array.getStorage()); final MetadataAttribute attribute = new MetadataAttribute("data", data, true); final MetadataElement sdsElement = new MetadataElement(name); sdsElement.addAttribute(attribute); metadataElement.addElement(sdsElement); final List<Attribute> list = variable.getAttributes(); for (Attribute hdfAttribute : list) { final String attribName = hdfAttribute.getShortName(); if ("units".equals(attribName)) { attribute.setUnit(hdfAttribute.getStringValue()); } else if ("long_name".equals(attribName)) { attribute.setDescription(hdfAttribute.getStringValue()); } else { addAttributeToElement(sdsElement, hdfAttribute); } } } }
public void addInputParamMetadata(Product product) throws ProductIOException { Variable inputParams = ncFile.findVariable("Input_Parameters"); if (inputParams != null) { final MetadataElement inputParamsMeta = new MetadataElement("Input_Parameters"); Array array; try { array = inputParams.read(); } catch (IOException e) { throw new ProductIOException(e.getMessage()); } String[] lines = array.toString().split("\n"); for (String line : lines) { String[] parts = line.split("="); if (parts.length == 2) { final String name = parts[0].trim(); final String value = parts[1].trim(); final ProductData data = ProductData.createInstance(ProductData.TYPE_ASCII, value); final MetadataAttribute attribute = new MetadataAttribute(name, data, true); inputParamsMeta.addAttribute(attribute); } } final MetadataElement metadataRoot = product.getMetadataRoot(); metadataRoot.addElement(inputParamsMeta); } }
public void addGlobalMetadata(Product product) { final MetadataElement globalElement = new MetadataElement("Global_Attributes"); addAttributesToElement(globalAttributes, globalElement); final MetadataElement metadataRoot = product.getMetadataRoot(); metadataRoot.addElement(globalElement); }
public void addSmiMetadata(final Product product) { // Variable l3mvar = ncFile.findVariable("l3m_data"); final MetadataElement bandAttributes = new MetadataElement("Band_Attributes"); List<Variable> variables = ncFile.getVariables(); for (Variable variable : variables) { final String name = variable.getShortName(); final MetadataElement sdsElement = new MetadataElement(name); final int dataType = getProductDataType(variable); final MetadataAttribute prodtypeattr = new MetadataAttribute("data_type", dataType); sdsElement.addAttribute(prodtypeattr); bandAttributes.addElement(sdsElement); final List<Attribute> list = variable.getAttributes(); for (Attribute varAttribute : list) { addAttributeToElement(sdsElement, varAttribute); } } final MetadataElement metadataRoot = product.getMetadataRoot(); metadataRoot.addElement(bandAttributes); }