private static int computeSymbolType(RasterDataNode raster, Source source) { if (raster instanceof Mask) { return Term.TYPE_B; } int dataType = raster.getDataType(); boolean isFloatingPointType = ProductData.isFloatingPointType(dataType); boolean isScaled = raster.isScalingApplied(); switch (source) { case RAW: return isFloatingPointType ? Term.TYPE_D : Term.TYPE_I; case GEOPHYSICAL: return isScaled || isFloatingPointType ? Term.TYPE_D : Term.TYPE_I; } throw new IllegalArgumentException("Source not supported: " + source); }
private boolean isNoDataValue(double sample) { final RasterDataNode rasterDataNode = tile.getRasterDataNode(); if (rasterDataNode.isNoDataValueUsed()) { if (rasterDataNode.isScalingApplied()) { return rasterDataNode.getGeophysicalNoDataValue() == sample; } else { return rasterDataNode.getNoDataValue() == sample; } } return false; } }
/** * @return The geophysical source image. * @since BEAM 4.5 */ public MultiLevelImage getGeophysicalImage() { if (geophysicalImage == null) { synchronized (this) { if (geophysicalImage == null) { if (isScalingApplied() || getDataType() == ProductData.TYPE_INT8 || getDataType() == ProductData.TYPE_UINT32) { this.geophysicalImage = createGeophysicalImage(); } else { this.geophysicalImage = getSourceImage(); } } } } return geophysicalImage; }
public static SampleConverter createConverter(RasterDataNode rasterDataNode) { boolean scaled = rasterDataNode.isScalingApplied(); boolean signedByte = rasterDataNode.getDataType() == ProductData.TYPE_INT8; if (!signedByte && !scaled) { return new IdentityConverter(rasterDataNode); } if (signedByte) { if (scaled) { return new ScaledSignedByteConverter(rasterDataNode); } else { return new UnscaledSignedByteConverter(rasterDataNode); } } return new DefaultScaledConverter(rasterDataNode); }
if (tile.getRasterDataNode().isScalingApplied()) { ProductData dataBuffer = ProductData.createInstance(ProductData.TYPE_FLOAT32, tile.getWidth() * tile.getHeight());
public DirectTile(RasterDataNode rasterDataNode, ProductData dataBuffer, Rectangle rectangle, boolean target) { Assert.notNull(rasterDataNode, "rasterDataNode"); this.rasterDataNode = rasterDataNode; this.dataBuffer = dataBuffer; this.minX = rectangle.x; this.minY = rectangle.y; this.maxX = rectangle.x + rectangle.width - 1; this.maxY = rectangle.y + rectangle.height - 1; this.width = rectangle.width; this.height = rectangle.height; this.target = target; this.scaled = rasterDataNode.isScalingApplied(); this.signedByte = rasterDataNode.getDataType() == ProductData.TYPE_INT8; this.dataBufferByte = (dataBuffer instanceof ProductData.Byte) ? ((ProductData.Byte) dataBuffer).getArray() : null; this.dataBufferShort = (dataBuffer instanceof ProductData.Short) ? ((ProductData.Short) dataBuffer).getArray() : null; this.dataBufferInt = (dataBuffer instanceof ProductData.Int) ? ((ProductData.Int) dataBuffer).getArray() : null; this.dataBufferFloat = (dataBuffer instanceof ProductData.Float) ? ((ProductData.Float) dataBuffer).getArray() : null; this.dataBufferDouble = (dataBuffer instanceof ProductData.Double) ? ((ProductData.Double) dataBuffer).getArray() : null; }
private void reprojectSourceRaster(RasterDataNode sourceRaster) { final int targetDataType; MultiLevelImage sourceImage; if (sourceRaster.isScalingApplied()) { targetDataType = sourceRaster.getGeophysicalDataType(); sourceImage = sourceRaster.getGeophysicalImage();
this.target = target; this.scaled = rasterDataNode.isScalingApplied(); this.signedByte = rasterDataNode.getDataType() == ProductData.TYPE_INT8;