@Override public Shape getImageShape(int level) { return rasterDataNodes[0].getSourceImage().getImageShape(level); }
public PlanarImage getSourceImage(RasterDataNode rasterDataNode, int level) { return getLevelImage(rasterDataNode.getSourceImage(), level); }
private MultiLevelImage createGeophysicalImage() { return new DefaultMultiLevelImage(new GenericMultiLevelSource(getSourceImage()) { @Override protected RenderedImage createImage(RenderedImage[] sourceImages, int level) { final RenderedImage source = sourceImages[0]; final double factor = getScalingFactor(); final double offset = getScalingOffset(); final ScalingType scalingType = getScalingType(); final InterpretationType interpretationType = getInterpretationType(); final int sourceDataType = source.getSampleModel().getDataType(); final int targetDataType = ReinterpretDescriptor.getTargetDataType(sourceDataType, factor, offset, scalingType, interpretationType); final SampleModel sampleModel = new SingleBandedSampleModel(targetDataType, source.getSampleModel().getWidth(), source.getSampleModel().getHeight()); final ImageLayout imageLayout = ReinterpretDescriptor.createTargetImageLayout(source, sampleModel); return ReinterpretDescriptor.create(source, factor, offset, scalingType, interpretationType, new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout)); } }); }
private static RenderedOp createTargetImage(RasterDataNode sourceBand, String operationName, HashMap<String, Object> operationParameters, RenderingHints renderingHints) { final ParameterBlockJAI parameterBlock = new ParameterBlockJAI(operationName); parameterBlock.addSource(sourceBand.getSourceImage()); for (Map.Entry<String, Object> parameter : operationParameters.entrySet()) { try { parameterBlock.setParameter(parameter.getKey(), parameter.getValue()); } catch (IllegalArgumentException e) { throw new OperatorException(MessageFormat.format("Illegal parameter ''{0}'' for JAI operation ''{1}''.", parameter.getKey(), operationName), e); } } try { return JAI.create(operationName, parameterBlock, renderingHints); } catch (Exception e) { throw new OperatorException(MessageFormat.format("Illegal source or parameters for JAI operation ''{0}''.", operationName), e); } } }
/** * Gets the model that describes an image pyramid. * If the given raster data node gas a source image set, its model will be returned. * Otherwise a new model will be created using {@link #createMultiLevelModel}. * * @param rasterDataNode The raster data node, for which an image pyramid model is requested. * @return The image pyramid model. */ public static MultiLevelModel getMultiLevelModel(RasterDataNode rasterDataNode) { if (rasterDataNode.isSourceImageSet()) { return rasterDataNode.getSourceImage().getModel(); } return createMultiLevelModel(rasterDataNode); }
/** * @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; }
private Band addBand(RasterDataNode raster, TimeCoding rasterTimeCoding, String bandName) { final Band band = new Band(bandName, raster.getDataType(), tsProduct.getSceneRasterWidth(), tsProduct.getSceneRasterHeight()); band.setSourceImage(raster.getSourceImage()); ProductUtils.copyRasterDataNodeProperties(raster, band); // todo copy also referenced band in valid pixel expression band.setValidPixelExpression(null); rasterTimeMap.put(band, rasterTimeCoding); tsProduct.addBand(band); return band; }
public Tile getSourceTile(RasterDataNode rasterDataNode, Rectangle region, BorderExtender borderExtender) { suspendWatch(); MultiLevelImage image = rasterDataNode.getSourceImage(); ///////////////////////////////////////////////////////////////////// // // Note: GPF pull-processing is triggered here! // Raster awtRaster; if (borderExtender != null) { awtRaster = image.getExtendedData(region, borderExtender); } else { awtRaster = image.getData(region); // Note: copyData is NOT faster! } // ///////////////////////////////////////////////////////////////////// resumeWatch(); return new TileImpl(rasterDataNode, awtRaster); }
int maxLevel = currentRaster.getSourceImage().getModel().getLevelCount() - 1; maxLevel = maxLevel > 10 ? 10 : maxLevel;
transform.concatenate(transformSave); transform.concatenate(vp.getModelToViewTransform()); transform.concatenate(raster.getSourceImage().getModel().getImageToModelTransform(0)); g2d.setTransform(transform); final GeneralPath[] linePaths = graticule.getLinePaths();
private static MultiLevelSource createMultiLevelSource(Color newColor, RasterDataNode raster) { MultiLevelSource source; if (raster.getValidMaskExpression() != null) { final AffineTransform transform = raster.getSourceImage().getModel().getImageToModelTransform(0); source = MaskImageMultiLevelSource.create(raster.getProduct(), newColor, raster.getValidMaskExpression(), true, transform); } else { source = MultiLevelSource.NULL; } return source; } }
int maxLevel = refRaster.getSourceImage().getModel().getLevelCount() - 1; maxLevel = maxLevel > 10 ? 10 : maxLevel;
/** * Gets the statistics. * If the statistics have not been set before they are computed using the given progress monitor {@code pm} and then set. * This method belongs to preliminary API and may be removed or changed in the future. * * @param accurate If true, accurate statistics are computed. * @param pm A progress monitor which is used to compute the new statistics, if required. * @return The statistics. * @since since BEAM 4.5 */ public synchronized Stx getStx(boolean accurate, ProgressMonitor pm) { if (stx == null || stx.getResolutionLevel() > 0 && accurate) { if (accurate) { setStx(computeStxImpl(0, pm)); } else { final int levelCount = getSourceImage().getModel().getLevelCount(); final int statisticsLevel = ImageManager.getInstance().getStatisticsLevel(this, levelCount); setStx(computeStxImpl(statisticsLevel, pm)); } } return stx; }
@Override public ImageLayer createLayer(LayerContext ctx, PropertySet configuration) { MultiLevelSource multiLevelSource = (MultiLevelSource) configuration.getValue( ImageLayer.PROPERTY_NAME_MULTI_LEVEL_SOURCE); if (multiLevelSource == null) { final Product product = (Product) configuration.getValue(PROPERTY_NAME_PRODUCT); final String[] rgbExpressions = new String[3]; rgbExpressions[0] = (String) configuration.getValue(PROPERTY_NAME_EXPRESSION_R); rgbExpressions[1] = (String) configuration.getValue(PROPERTY_NAME_EXPRESSION_G); rgbExpressions[2] = (String) configuration.getValue(PROPERTY_NAME_EXPRESSION_B); final RasterDataNode[] rasters = getRgbBands(product, rgbExpressions); multiLevelSource = BandImageMultiLevelSource.create(rasters, rasters[0].getSourceImage().getModel(), ProgressMonitor.NULL); } configuration.setValue(ImageLayer.PROPERTY_NAME_MULTI_LEVEL_SOURCE, multiLevelSource); configuration.setValue(ImageLayer.PROPERTY_NAME_BORDER_SHOWN, true); configuration.setValue(ImageLayer.PROPERTY_NAME_BORDER_COLOR, ImageLayer.DEFAULT_BORDER_COLOR); configuration.setValue(ImageLayer.PROPERTY_NAME_BORDER_WIDTH, ImageLayer.DEFAULT_BORDER_WIDTH); final ImageLayer layer = new ImageLayer(this, multiLevelSource, configuration); layer.setName("RGB Layer"); return layer; }
private MaskAreaStatistics computeMaskAreaStatistics(ProgressMonitor pm) { final MultiLevelImage maskImage = mask.getSourceImage();
private void setLogarithmicDisplay(final RasterDataNode raster, final boolean logarithmicDisplay) { final ImageInfoEditorModel model = imageInfoEditor.getModel(); if (logarithmicDisplay) { final StxFactory stxFactory = new StxFactory(); final Stx stx = stxFactory .withHistogramBinCount(raster.getStx().getHistogramBinCount()) .withLogHistogram(logarithmicDisplay) .withResolutionLevel(raster.getSourceImage().getModel().getLevelCount() - 1) .create(raster, ProgressMonitor.NULL); model.setDisplayProperties(raster.getName(), raster.getUnit(), stx, POW10_SCALING); } else { model.setDisplayProperties(raster.getName(), raster.getUnit(), raster.getStx(), Scaling.IDENTITY); } model.getImageInfo().setLogScaled(logarithmicDisplay); }
} else { targetDataType = sourceRaster.getDataType(); sourceImage = sourceRaster.getSourceImage();