public void removeStxFromProduct(Product product) { List<HistogramConfig> toRemove = new ArrayList<>(7); for (HistogramConfig histogramConfig : stxMap.keySet()) { if (histogramConfig.raster.getProduct() == product) { toRemove.add(histogramConfig); } } for (HistogramConfig histogramConfig : toRemove) { stxMap.remove(histogramConfig); } }
/** * @return the associated product. */ @Override public Product getProduct() { return getRaster().getProduct(); }
@Override public void handleLayersRemoved(Layer parentLayer, Layer[] childLayers) { for (Layer childLayer : childLayers) { if (childLayer == imageLayer) { final Product product = rasterDataNode.getProduct(); if (product != null) { product.removeProductNodeListener(this); } } } }
@Override public Product getProduct() { return getRaster().getProduct(); }
/** * @deprecated since BEAM 4.11; no replacement. */ @Deprecated public static TransectProfileData getTransectProfileData(final RasterDataNode raster) throws IOException { Shape transectShape = null; if (raster != null) { transectShape = getTransectShape(raster.getProduct()); } if (transectShape == null) { return null; } else { return raster.createTransectProfileData(transectShape); } }
@Override public ProductNodeGroup<VectorDataNode> getVectorDataNodeGroup() { return getRasterDataNode().getProduct().getVectorDataGroup(); }
private static String createDefaultFileName(final RasterDataNode raster) { return FileUtils.getFilenameWithoutExtension(raster.getProduct().getName()) + "_TRANSECT.txt"; }
private static List<RasterDataNode> getReferencedVirtualBands(final RasterDataNode node) { final Product product = node.getProduct(); final List<RasterDataNode> rasterList = new ArrayList<RasterDataNode>(); if (product != null) { for (int i = 0; i < product.getNumBands(); i++) { final Band band = product.getBandAt(i); if (band instanceof VirtualBand) { final VirtualBand virtualBand = (VirtualBand) band; if (isNodeReferencedByExpression(node, virtualBand.getExpression())) { rasterList.add(virtualBand); } } } } return rasterList; }
@Override public void selectionChange(ProductSceneView oldValue, ProductSceneView newValue) { if (oldValue != null) { removeViewListener(oldValue); } if (newValue != null) { addViewListener(newValue); VectorDataNode vectorDataNode = getVectorDataNode(newValue); selectionChanged(newValue.getRaster().getProduct(), newValue.getRaster(), vectorDataNode); } }
void selectBand(RasterDataNode band) { if (band != null) { selectedProduct = band.getProduct(); } selectedBand = band; handleSelectionStateChange(); }
void setRaster(final RasterDataNode newRaster) { if (this.raster != newRaster) { this.raster = newRaster; if (newRaster == null) { if (product != null) { product.removeProductNodeListener(productNodeListener); } product = null; } else if (product != newRaster.getProduct()) { if (product != null) { product.removeProductNodeListener(productNodeListener); } product = newRaster.getProduct(); if (product != null) { product.addProductNodeListener(productNodeListener); } } resetMaskListState(); refreshButton.setEnabled(raster != null); } }
private boolean mustEnableVectorDataCollectionLayer() { return getRaster().getProduct().getVectorDataGroup().getNodeCount() > 0; }
private static String getExpression(RasterDataNode raster) { Product product = raster.getProduct(); if (product != null) { if (product.containsBand(raster.getName())) { return raster.getName(); } else { if (raster instanceof VirtualBand) { return ((VirtualBand) raster).getExpression(); } } } return null; }
private void deregisterLayerCanvasListeners() { getRaster().getProduct().removeProductNodeListener(rasterChangeHandler); layerCanvas.removeComponentListener(layerCanvasComponentHandler); layerCanvas.removeMouseListener(layerCanvasMouseHandler); layerCanvas.removeMouseMotionListener(layerCanvasMouseHandler); }
private synchronized Layer createVectorDataCollectionLayer() { final LayerType collectionLayerType = LayerTypeRegistry.getLayerType(VectorDataCollectionLayerType.class); final Layer collectionLayer = collectionLayerType.createLayer(this, collectionLayerType.createLayerConfig(this)); final ProductNodeGroup<VectorDataNode> vectorDataGroup = getRaster().getProduct().getVectorDataGroup(); final VectorDataNode[] vectorDataNodes = vectorDataGroup.toArray(new VectorDataNode[vectorDataGroup.getNodeCount()]); for (final VectorDataNode vectorDataNode : vectorDataNodes) { final Layer layer = VectorDataLayerType.createLayer(this, vectorDataNode); collectionLayer.getChildren().add(layer); } return collectionLayer; }
private synchronized Layer createMaskCollectionLayer() { final LayerType maskCollectionType = LayerTypeRegistry.getLayerType(MaskCollectionLayerType.class); final PropertySet layerConfig = maskCollectionType.createLayerConfig(null); layerConfig.setValue(MaskCollectionLayerType.PROPERTY_NAME_RASTER, getRaster()); final Layer maskCollectionLayer = maskCollectionType.createLayer(this, layerConfig); ProductNodeGroup<Mask> productNodeGroup = getRaster().getProduct().getMaskGroup(); final RasterDataNode raster = getRaster(); for (int i = 0; i < productNodeGroup.getNodeCount(); i++) { final Mask mask = productNodeGroup.get(i); //todo add all mask layers as soon as the masks have been scaled to fit the raster if (raster.getRasterSize().equals(mask.getRasterSize())) { Layer layer = MaskLayerType.createLayer(raster, mask); maskCollectionLayer.getChildren().add(layer); } } return maskCollectionLayer; }
private void updateMaskForm(ProductSceneView view) { if (view == null) { final ProductNode selectedProductNode = SnapApp.getDefault().getSelectedProductNode(EXPLORER); if (selectedProductNode instanceof RasterDataNode) { final RasterDataNode rdn = (RasterDataNode) selectedProductNode; maskForm.reconfigureMaskTable(rdn.getProduct(), rdn); } else if (selectedProductNode instanceof Product) { final Product product = (Product) selectedProductNode; maskForm.reconfigureMaskTable(product, null); } else if (selectedProductNode != null && selectedProductNode.getProduct() != null) { maskForm.reconfigureMaskTable(selectedProductNode.getProduct(), null); } else { maskForm.clearMaskTable(); } } else { maskForm.reconfigureMaskTable(view.getProduct(), view.getRaster()); } }
public void updateNoDataImage() { // change configuration of layer ; not setting MultiLevelSource final String expression = getRaster().getValidMaskExpression(); final ImageLayer noDataLayer = (ImageLayer) getNoDataLayer(false); if (noDataLayer != null) { if (expression != null) { final Color color = noDataLayer.getConfiguration().getValue( NoDataLayerType.PROPERTY_NAME_COLOR); final MultiLevelSource multiLevelSource = ColoredMaskImageMultiLevelSource.create(getRaster().getProduct(), color, expression, true, getBaseImageLayer().getImageToModelTransform()); noDataLayer.setMultiLevelSource(multiLevelSource); } else { noDataLayer.setMultiLevelSource(MultiLevelSource.NULL); } } }
@Override public void paintOverlay(LayerCanvas canvas, Rendering rendering) { if (geoPosition == null || !geoPosition.isValid()) { return; } final GeoCoding geoCoding = sceneView.getRaster().getGeoCoding(); if (!geoCoding.canGetPixelPos()) { return; } final Product product = sceneView.getRaster().getProduct(); final PixelPos pixelPos = geoCoding.getPixelPos(geoPosition, null); if (!pixelPos.isValid() || !product.containsPixel(pixelPos)) { return; } final Viewport viewport = canvas.getViewport(); drawCursor(rendering.getGraphics(), viewport, pixelPos); }
private static FilterBand getFilterBand(RasterDataNode sourceRaster, String bandName, Filter filter, int iterationCount) { FilterBand targetBand; Product targetProduct = sourceRaster.getProduct(); if (filter.getOperation() == Filter.Operation.CONVOLVE) { targetBand = new ConvolutionFilterBand(bandName, sourceRaster, getKernel(filter), iterationCount); if (sourceRaster instanceof Band) { ProductUtils.copySpectralBandProperties((Band) sourceRaster, targetBand); } } else { GeneralFilterBand.OpType opType = getOpType(filter.getOperation()); targetBand = new GeneralFilterBand(bandName, sourceRaster, opType, getKernel(filter), iterationCount); if (sourceRaster instanceof Band) { ProductUtils.copySpectralBandProperties((Band) sourceRaster, targetBand); } } targetBand.setDescription(String.format("Filter '%s' (=%s) applied to '%s'", filter.getName(), filter.getOperation(), sourceRaster.getName())); if (sourceRaster instanceof Band) { ProductUtils.copySpectralBandProperties((Band) sourceRaster, targetBand); } targetProduct.addBand(targetBand); ProductUtils.copyImageGeometry(sourceRaster, targetBand, false); targetBand.fireProductNodeDataChanged(); return targetBand; }