/// <summary>
 /// Initializes a new instance of the <see cref="SpectralOperationMethod" /> class.
 /// </summary>
 /// <param name="identifier">The identifier.</param>
 /// <param name="name">The name.</param>
 /// <param name="remarks">The remarks.</param>
 /// <param name="aliases">The aliases.</param>
 /// <param name="version">The version.</param>
 /// <param name="isReversible">Indicates whether the method is reversible.</param>
 /// <param name="spectralDomain">The spectral domain of the operation.</param>
 /// <param name="sourceType">The source type of the method.</param>
 /// <param name="resultType">The result type of the method.</param>
 /// <param name="supportedModels">The supported geometry models.</param>
 /// <param name="supportedFormats">The supported raster formats.</param>
 /// <param name="supportedModes">The supported execution modes of the method.</param>
 /// <param name="parameters">The parameters of the operation.</param>
 /// <exception cref="System.ArgumentNullException">The identifier is null.</exception>
 public SpectralOperationMethod(String identifier, String name, String remarks, String[] aliases, Version version,
                                Boolean isReversible, SpectralOperationDomain spectralDomain,
                                Type sourceType, Type resultType, GeometryModel supportedModels,
                                RasterFormat supportedFormats,
                                ExecutionMode supportedModes,
                                params OperationParameter[] parameters)
     : base(identifier, name, remarks, aliases, version, isReversible, sourceType, resultType, supportedModels, supportedModes, parameters)
 {
     _supportedFormats = ExtractRasterFormats(supportedFormats);
     _spectralDomain   = spectralDomain;
 }
 /// <summary>
 /// Creates a general <see cref="SpectralOperationMethod" /> instance for spectral transformations.
 /// </summary>
 /// <param name="identifier">The identifier.</param>
 /// <param name="name">The name.</param>
 /// <param name="remarks">The remarks.</param>
 /// <param name="aliases">The aliases.</param>
 /// <param name="version">The version.</param>
 /// <param name="isReversible">Indicates whether the method is reversible.</param>
 /// <param name="spectralDomain">The spectral domain of the operation.</param>
 /// <param name="supportedFormats">The supported raster formats of the method.</param>
 /// <param name="parameters">The parameters of the operation.</param>
 /// <returns>The <see cref="SpectralOperationMethod" /> instance produced by the method.</returns>
 /// <exception cref="System.ArgumentNullException">The identifier is null.</exception>
 public static SpectralOperationMethod CreateSpectralTransformation(String identifier, String name, String remarks, String[] aliases, String version,
                                                                    Boolean isReversible, SpectralOperationDomain spectralDomain,
                                                                    RasterFormat supportedFormats,
                                                                    params OperationParameter[] parameters)
 {
     return(new SpectralOperationMethod(identifier, name, remarks, aliases, Version.Parse(version),
                                        isReversible, spectralDomain,
                                        typeof(ISpectralGeometry),
                                        typeof(ISpectralGeometry),
                                        GeometryModel.Any,
                                        supportedFormats,
                                        ExecutionMode.Any,
                                        parameters));
 }