private boolean mustReplaceNaN(RasterDataNode sourceRaster, int targetDataType, double targetNoDataValue) { final boolean isFloat = ProductData.isFloatingPointType(targetDataType); final boolean isNoDataGiven = sourceRaster.isNoDataValueUsed() || noDataValue != null; final boolean isNoDataNaN = Double.isNaN(targetNoDataValue); return isFloat && isNoDataGiven && !isNoDataNaN; }
private Interpolation getResampling(Band band) { int resampleType = getResampleType(); if (!ProductData.isFloatingPointType(band.getDataType())) { resampleType = Interpolation.INTERP_NEAREST; } return Interpolation.getInstance(resampleType); }
private static boolean isNumericType(MetadataAttribute attribute) { return ProductData.isIntType(attribute.getDataType()) || ProductData.isFloatingPointType(attribute.getDataType()); }
private String getPixelString(RasterDataNode raster, int x, int y, int level) { if (isPixelValid(raster, x, y, level)) { if (raster.isScalingApplied() || ProductData.isFloatingPointType(raster.getDataType())) { int dataType = raster.getGeophysicalDataType(); if (dataType == ProductData.TYPE_FLOAT64) { double pixel = ProductUtils.getGeophysicalSampleAsDouble(raster, x, y, level); return String.format("%.10f", pixel); } else if (dataType == ProductData.TYPE_FLOAT32) { double pixel = ProductUtils.getGeophysicalSampleAsDouble(raster, x, y, level); return String.format("%.5f", pixel); } } return String.valueOf(ProductUtils.getGeophysicalSampleAsLong(raster, x, y, level)); } else { return RasterDataNode.NO_DATA_TEXT; } }
private static MetadataTableElement[] getChildrenElementsFromElement(MetadataElement metadataElement) { MetadataElement[] elements = metadataElement.getElements(); MetadataAttribute[] attributes = metadataElement.getAttributes(); List<MetadataTableElement> metadataTableElementList = new ArrayList<>(); for (MetadataElement element : elements) { metadataTableElementList.add(new MetadataTableInnerElement(element)); } for (MetadataAttribute attribute : attributes) { final long dataElemSize = attribute.getNumDataElems(); if (dataElemSize > 1) { final int dataType = attribute.getDataType(); ProductData data = attribute.getData(); if ((ProductData.isFloatingPointType(dataType) || ProductData.isIntType(dataType)) && !(data instanceof ProductData.UTC)) { addMetadataAttributes(attribute, data, metadataTableElementList); } else { metadataTableElementList.add(new MetadataTableLeaf(attribute)); } } else { metadataTableElementList.add(new MetadataTableLeaf(attribute)); } } return metadataTableElementList.toArray(new MetadataTableElement[metadataTableElementList.size()]); }