async private Task Import(object arg)
        {
            if (!(arg is ImportArguments))
            {
                return;
            }

            ImportArguments args = (ImportArguments)arg;

            await Task.Delay(300); // open reporter UI...

            bool succeeded = true;

            foreach (string filename in args.Data)
            {
                succeeded = await args.Operator.Import(filename, args.Providers);

                if (!succeeded)
                {
                    break;
                }
            }

            AccessFDB fdb = args.dataset.Database as AccessFDB;

            if (fdb != null)
            {
                IFeatureClass fc = await fdb.GetFeatureclass(args.dataset.DatasetName, args.dataset.DatasetName + "_IMAGE_POLYGONS");

                if (fc != null)
                {
                    await fdb.CalculateExtent(fc);
                }

                await fdb.ShrinkSpatialIndex(args.dataset.DatasetName + "_IMAGE_POLYGONS");

                //if (!fdb.CalculateSpatialIndex(fdb.GetFeatureclass(args.dataset.DatasetName, args.dataset.DatasetName + "_IMAGE_POLYGONS"), 10, 0))
                //{
                //    MessageBox.Show("ERROR: CalculateSpatialIndex - " + fdb.lastErrorMsg);
                //}
            }
        }
Ejemplo n.º 2
0
        async private Task RebuildIndicesAsync(object argument)
        {
            if (!(argument is List <IClass>))
            {
                return;
            }

            List <IClass> classes = argument as List <IClass>;

            if (ReportProgress != null)
            {
                _report.featureMax = classes.Count;
                _report.featurePos = 0;
                ReportProgress(_report);
            }
            foreach (IClass cl in classes)
            {
                if (!(cl is IFeatureClass) || cl.Dataset == null || !(cl.Dataset.Database is AccessFDB))
                {
                    continue;
                }

                if (ReportProgress != null)
                {
                    _report.featurePos = classes.IndexOf(cl);
                    _report.Message    = "Featureclass " + cl.Name;
                    ReportProgress(_report);
                }

                AccessFDB fdb = cl.Dataset.Database as AccessFDB;
                if (!await fdb.ShrinkSpatialIndex(cl.Name))
                {
                    MessageBox.Show("Error rebuilding " + cl.Name + " index:\n" + fdb.LastErrorMessage);
                    return;
                }
                if (!_cancelTracker.Continue)
                {
                    return;
                }
            }
        }