@Override protected boolean verifyUserInput() { final SpectralUnmixingFormModel formModel = form.getFormModel(); if (formModel.getSourceProduct() == null) { showErrorDialog("No source product selected."); return false; } final Map<String, Object> parameterMap = parameterSupport.getParameterMap(); updateParameterMap(parameterMap); final Endmember[] endmembers = (Endmember[]) parameterMap.get("endmembers"); final String[] sourceBandNames = (String[]) parameterMap.get("sourceBandNames"); final double minBandwidth = (Double) parameterMap.get("minBandwidth"); double[] sourceWavelengths = new double[sourceBandNames.length]; double[] sourceBandwidths = new double[sourceBandNames.length]; for (int i = 0; i < sourceBandNames.length; i++) { final Band sourceBand = formModel.getSourceProduct().getBand(sourceBandNames[i]); sourceWavelengths[i] = sourceBand.getSpectralWavelength(); sourceBandwidths[i] = sourceBand.getSpectralBandwidth(); } if (!matchingWavelength(endmembers, sourceWavelengths, sourceBandwidths, minBandwidth)) { showErrorDialog( "One or more source wavelengths do not fit\n" + "to one or more endmember spectra.\n\n" + "Consider increasing the maximum wavelength deviation."); return false; } return true; }
@Override protected Product createTargetProduct() throws Exception { final SpectralUnmixingFormModel formModel = form.getFormModel(); Map<String, Object> parameterMap = parameterSupport.getParameterMap(); updateParameterMap(parameterMap); return GPF.createProduct( OperatorSpi.getOperatorAlias(SpectralUnmixingOp.class), parameterMap, formModel.getSourceProduct()); }