コード例 #1
0
        public static bool CreateOverviews(OverviewCreateInfo info, string inputFilePath, Gdal.GDALProgressFuncDelegate progressFuncDelegate)
        {
            bool    result  = false;
            Dataset dataset = null;

            try
            {
                Access access = OverviewOptionEnum.OverviewForamt.External == info.OverviewFormat ? Access.GA_ReadOnly : Access.GA_Update;

                Gdal.PushErrorHandler(GdalConfig.GdalHandlers.ErrorHandler);
                dataset = Gdal.Open(inputFilePath, access);
                Gdal.PopErrorHandler();

                if (dataset == null)
                {
                    return(result);
                }

                List <int> levels = info.LevelList;
                if (info.IsNeedCalcLevel)
                {
                    levels = CalculateOverViewLevels(dataset);
                }

                if (levels.Count < 1)
                {
                    return(result);
                }

                if (OverviewOptionEnum.OverviewForamt.External == info.OverviewFormat)
                {
                    DeleteExternalOverviews(inputFilePath);
                }

                Gdal.PushErrorHandler(GdalConfig.GdalHandlers.ErrorHandler);
                if (dataset.BuildOverviews(info.OverviewResamplingOption.ToString(), levels.ToArray(), progressFuncDelegate, null) == (int)CPLErr.CE_None)
                {
                    result = true;
                }
                Gdal.PopErrorHandler();
            }
            catch (Exception ex)
            {
                //LoggerManager.WriteErrorLog(ex.Message);
            }
            finally
            {
                if (dataset != null)
                {
                    dataset.FlushCache();
                    dataset.Dispose();
                }
            }

            return(result);
        }
コード例 #2
0
        public OverviewCreateInfo GetOverviewCreateOptions()
        {
            OverviewCreateInfo overviewCreateInfo = new OverviewCreateInfo();

            overviewCreateInfo.OverviewFormat                = (OverviewOptionEnum.OverviewForamt)_overviewFormatComboBox.SelectedIndex;
            overviewCreateInfo.OverviewResamplingOption      = (GdalEnum.ResamplingType)_overviewResamplingComboBox.SelectedValue;
            overviewCreateInfo.IsNeedCalcLevel               = _calcLevelsCheckBox.Checked;
            overviewCreateInfo.OverviewCreationOptionsString = _creationOptionsTextBox.Text;
            if (!overviewCreateInfo.IsNeedCalcLevel)
            {
                overviewCreateInfo.LevelList = GetPyramidLevels();
            }

            return(overviewCreateInfo);
        }
コード例 #3
0
        private bool SetOverviewCreateInfo()
        {
            _overviewCreateInfo = new OverviewCreateInfo();

            _overviewCreateInfo = _overviewCreateOptionControl.GetOverviewCreateOptions();

            _overviewCreateInfo.OverviewCreatePathInfo = _overviewCreatePathSettingControl.GetOverviewCreatePathInfo();
            if (_overviewCreateInfo.OverviewCreatePathInfo.InputPathList.Count < 1)
            {
                return(false);
            }

            if (!_overviewCreateInfo.IsNeedCalcLevel && _overviewCreateInfo.LevelList.Count < 1)
            {
                return(false);
            }

            _overviewCreateOptionControl.SetOverviewProfileSetting();

            LoggerManager.WriteOverviewCreateInfoLog(_overviewCreateInfo);

            return(true);
        }
コード例 #4
0
 private void InitOverviewCreateInfo()
 {
     _overviewCreateInfo = new OverviewCreateInfo();
 }