private static void reprojectBandData(Mask[] selectedMasks, Product sourceProduct, Product targetProduct) { final Map<String, Object> projParameters = Collections.emptyMap(); Map<String, Product> projProducts = new HashMap<>(); projProducts.put("source", sourceProduct); projProducts.put("collocateWith", targetProduct); Product reprojectedProduct = GPF.createProduct("Reproject", projParameters, projProducts); for (Mask mask : selectedMasks) { Band band = createBandCopy(targetProduct, mask); MultiLevelImage image = reprojectedProduct.getMaskGroup().get(mask.getName()).getSourceImage(); band.setSourceImage(image); } }
private static void copyMaskPixel(Mask[] selectedMasks, Product sourceProduct, Product[] maskPixelTargetProducts) { if (MultiSizeIssue.isMultiSize(sourceProduct)) { final Product resampledProduct = MultiSizeIssue.maybeResample(sourceProduct); if (resampledProduct != null) { sourceProduct = resampledProduct; for (int i = 0; i < selectedMasks.length; i++) { Mask selectedMask = selectedMasks[i]; selectedMasks[i] = sourceProduct.getMaskGroup().get(selectedMask.getName()); } } else { return; } } for (Product targetProduct : maskPixelTargetProducts) { if (sourceProduct.isCompatibleProduct(targetProduct, 1.0e-3f)) { copyBandData(selectedMasks, targetProduct); } else { reprojectBandData(selectedMasks, sourceProduct, targetProduct); } } }
@Override public void actionPerformed(ActionEvent e) { Window window = getWindow(e); final Product sourcProduct = getMaskForm().getProduct(); Mask[] selectedMasks = getMaskForm().getSelectedMasks(); Product[] allProducts = SnapApp.getDefault().getProductManager().getProducts(); final TransferMaskDialog dialog = new TransferMaskDialog(window, sourcProduct, allProducts, selectedMasks); if (dialog.show() == AbstractDialog.ID_OK) { Product[] maskPixelTargetProducts = dialog.getMaskPixelTargets(); copyMaskPixel(selectedMasks, sourcProduct, maskPixelTargetProducts); Product[] maskDefinitionTargetProducts = dialog.getMaskDefinitionTargets(); copyMaskDefinition(selectedMasks, maskDefinitionTargetProducts); } }
MaskFormActions(ToolTopComponent maskTopComponent, MaskForm maskForm) { maskActions = new MaskAction[]{ new NewBandMathsAction(maskForm), new NewRangeAction(maskForm), new NewVectorDataNodeAction(maskForm), new NullAction(maskForm), new NewUnionAction(maskForm), new NewIntersectionAction(maskForm), new NewDifferenceAction(maskForm), new NewInvDifferenceAction(maskForm), new NewComplementAction(maskForm), new NullAction(maskForm), new CopyAction(maskForm), new EditAction(maskForm), new RemoveAction(maskForm), new TransferAction(maskForm), new ImportAction(maskTopComponent, maskForm), new ExportAction(maskTopComponent, maskForm), new ZoomToVectorMaskAction(maskTopComponent, maskForm), new NullAction(maskForm), }; }
private static void copyBandData(Mask[] selectedMasks, Product targetProduct) { for (Mask mask : selectedMasks) { Band band = createBandCopy(targetProduct, mask); band.setSourceImage(mask.getSourceImage()); } }
@Override void updateState() { setEnabled(getMaskForm().isInManagementMode() && getMaskForm().getSelectedRowCount() > 0 && SnapApp.getDefault().getProductManager().getProductCount() > 1); }