private void PerformDoD(Epoch DoDEpoch, ThresholdProps tProps)
        {
            DEMSurvey NewDEM  = DoDEpoch.NewDEM;
            DEMSurvey OldDEM  = DoDEpoch.OldDEM;
            string    aoiName = AOIMask is Project.Masks.AOIMask ? AOIMask.Name : string.Empty;

            string dodName = frmDoDProperties.GetUniqueAnalysisName(NewDEM.Name, OldDEM.Name, tProps.ThresholdString, aoiName);

            System.IO.DirectoryInfo dFolder = ProjectManager.Project.GetDoDFolder();

            ChangeDetectionEngineBase cdEngine = null;

            switch (tProps.Method)
            {
            case ThresholdProps.ThresholdMethods.MinLoD:
                cdEngine = new ChangeDetectionEngineMinLoD(NewDEM, OldDEM, AOIMask, tProps.Threshold, true);
                break;

            case ThresholdProps.ThresholdMethods.Propagated:
                cdEngine = new ChangeDetectionEnginePropProb(NewDEM, OldDEM, DoDEpoch.NewDEMErrorSurface, DoDEpoch.OldDEMErrorSurface, AOIMask, true);
                break;

            case ThresholdProps.ThresholdMethods.Probabilistic:
                cdEngine = new ChangeDetectionEngineProbabilistic(NewDEM, OldDEM, AOIMask, DoDEpoch.NewDEMErrorSurface, DoDEpoch.OldDEMErrorSurface, tProps.Threshold, tProps.SpatialCoherenceProps, true);
                break;
            }

            DoDBase dod = cdEngine.Calculate(dodName, dFolder, true, ProjectManager.Project.Units);

            ProjectManager.Project.DoDs.Add(dod);
        }
        private void PerformDoD(BatchProps props)
        {
            string aoiName = props.AOIMask is Project.Masks.AOIMask ? props.AOIMask.Name : string.Empty;
            string dodName = frmDoDProperties.GetUniqueAnalysisName(props.NewSurface.Name, props.OldSurface.Name, props.ThresholdProps.ThresholdString, aoiName);

            System.IO.DirectoryInfo dFolder = ProjectManager.Project.GetDoDFolder();

            ChangeDetectionEngineBase cdEngine = null;

            switch (props.ThresholdProps.Method)
            {
            case ThresholdProps.ThresholdMethods.MinLoD:
                cdEngine = new ChangeDetectionEngineMinLoD(props.NewSurface, props.OldSurface, props.AOIMask, props.ThresholdProps.Threshold, true);
                break;

            case ThresholdProps.ThresholdMethods.Propagated:
                cdEngine = new ChangeDetectionEnginePropProb(props.NewSurface, props.OldSurface, props.NewError, props.OldError, props.AOIMask, true);
                break;

            case ThresholdProps.ThresholdMethods.Probabilistic:
                cdEngine = new ChangeDetectionEngineProbabilistic(props.NewSurface, props.OldSurface, props.AOIMask, props.NewError, props.OldError,
                                                                  props.ThresholdProps.Threshold, props.ThresholdProps.SpatialCoherenceProps, true);
                break;
            }

            DoDBase dod = cdEngine.Calculate(dodName, dFolder, true, ProjectManager.Project.Units);

            ProjectManager.Project.DoDs.Add(dod);
        }