Пример #1
0
        private void BuildList()
        {
            lstDatasets.Items.Clear();
            AccessFDB fdb = (_providerId == "mssql" ? new SqlFDB() : new AccessFDB());

            if (!fdb.Open(this.ConnectionString))
            {
                MessageBox.Show(fdb.lastErrorMsg, "Error");
                return;
            }

            string[] dsnames = fdb.DatasetNames;
            string   imageSpace;

            if (dsnames != null)
            {
                foreach (string dsname in dsnames)
                {
                    ListViewItem item = new ListViewItem(
                        dsname, fdb.IsImageDataset(dsname, out imageSpace) ? 1 : 0);
                    lstDatasets.Items.Add(item);

                    if (item.Text == _dsname)
                    {
                        lstDatasets.SelectedIndices.Add(lstDatasets.Items.Count - 1);
                    }
                }
            }
        }
Пример #2
0
        public AccessFDBImageCatalogClass(IRasterDataset dataset, AccessFDB fdb, IFeatureClass polygonsFC, ISpatialReference sRef, string imageSpace)
        {
            _dataset = dataset;
            _dsname  = dataset.DatasetName;
            _fdb     = fdb;
            _fc      = polygonsFC;
            calcPolygon(polygonsFC.Envelope);
            _sRef       = sRef;
            _imageSpace = (imageSpace == null) ? "" : imageSpace;

            if (_imageSpace != "" && imageSpace.ToLower() != "database")
            {
                try
                {
                    DirectoryInfo di = new DirectoryInfo(_imageSpace);
                    if (di.Exists)
                    {
                        _imageSpaceType = ImageSpaceType.FileSystem;
                    }
                    else
                    {
                        _imageSpaceType = ImageSpaceType.Invalid;
                    }
                }
                catch
                {
                    _imageSpaceType = ImageSpaceType.Invalid;
                }
            }
        }
        public IExplorerObject CreateExplorerObject(IExplorerObject parentExObject)
        {
            if (!CanCreate(parentExObject))
            {
                return(null);
            }

            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Title    = "New AccessFDB...";
            dlg.Filter   = "MSAccess DB(*.mdb)|*.mdb";
            dlg.FileName = parentExObject.FullName + @"\fdb.mdb";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                AccessFDB fdb = new AccessFDB();
                if (!fdb.Create(dlg.FileName))
                {
                    MessageBox.Show(fdb.lastErrorMsg, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(null);
                }
                _filename = dlg.FileName;
                return(this);
            }
            return(null);
        }
        public IExplorerFileObject CreateInstance(IExplorerObject parent, string filename)
        {
            string f = filename.ToLower();

            if (f.EndsWith(".jpg.mdb") ||
                f.EndsWith(".png.mdb") ||
                f.EndsWith(".tif.mdb") ||
                f.EndsWith(".tiff.mdb"))
            {
                return(null);
            }

            if (!f.ToLower().EndsWith(".mdb"))
            {
                return(null);
            }

            try
            {
                if (!(new FileInfo(f).Exists))
                {
                    return(null);
                }
                using (AccessFDB fdb = new AccessFDB())
                {
                    if (!fdb.Open(f) || !fdb.IsValidAccessFDB)
                    {
                        return(null);
                    }
                }
            }
            catch { return(null); }

            return(new AccessFDBExplorerObject(parent, filename));
        }
Пример #5
0
 public AccessFDBImageDatasetImageClass(AccessFDB fdb, string dsname, int ID, Polygon polygon)
 {
     _fdb     = fdb;
     _ID      = ID;
     _polygon = polygon;
     _dsname  = dsname;
 }
Пример #6
0
        //private QueryResult _queryResult=null;

        public AccessFDBFeatureClass(AccessFDB fdb, IDataset dataset, GeometryDef geomDef)
        {
            _fdb     = fdb;
            _dataset = dataset;
            _geomDef = (geomDef != null) ? geomDef : new GeometryDef();
            m_fields = new Fields();
        }
Пример #7
0
        static int Main(string[] args)
        {
            string mdb = "", dataset = "";
            bool   delExisting = true;

            for (int i = 0; i < args.Length - 1; i++)
            {
                if (args[i] == "-mdb")
                {
                    mdb = args[++i];
                }
                if (args[i] == "-ds")
                {
                    dataset = args[++i];
                }
                else if (args[i] == "-delexisting")
                {
                    try { delExisting = Convert.ToBoolean(args[++i]); }
                    catch { }
                }
            }

            if (mdb == "" || dataset == "")
            {
                Console.WriteLine("USAGE:");
                Console.WriteLine("gView.Cmd.CreateAccessFDBDataset -mdb <Filename> -ds <Datasetname>");
                Console.WriteLine("                      [-delexisting <true|false>]");
                return(1);
            }

            try
            {
                AccessFDB fdb = new AccessFDB();
                if (!fdb.Open(mdb))
                {
                    Console.WriteLine("\n\nERROR: " + fdb.lastErrorMsg);
                    return(1);
                }

                //SpatialReference sRef = new SpatialReference();

                if (fdb.CreateDataset(dataset, null) < 1)
                {
                    Console.WriteLine("\n\nERROR: " + fdb.lastErrorMsg);
                    fdb.Dispose();
                    return(1);
                }
                fdb.Dispose();
                Console.WriteLine(mdb + ": Dataset " + dataset + " created...");

                return(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine("\n\nERROR: " + ex.Message);

                return(1);
            }
        }
Пример #8
0
        async public Task <bool> Import(string path, Dictionary <string, Guid> providers)
        {
            //_cancelTracker.Reset();
            if (!_cancelTracker.Continue)
            {
                _errMsg = "Canceled by user...";
                return(false);
            }

            if (!(_fdb is AccessFDB))
            {
                _errMsg = "Database in not a FeatureDatabase...";
                return(false);
            }

            AccessFDB fdb = (AccessFDB)_fdb;

            if (ReportAction != null)
            {
                ReportAction(this, "Open Raster Polygon Class...");
            }

            IFeatureClass rasterFC = await fdb.GetFeatureclass(_dsname, _dsname + "_IMAGE_POLYGONS");

            if (rasterFC == null)
            {
                if (rasterFC == null)
                {
                    Console.WriteLine("\n\nERROR: Open Featureclass - Can't init featureclass " + _dsname + "_IMAGE_POLYGONS");
                    return(false);
                }
            }

            DirectoryInfo di = new DirectoryInfo(path);
            FileInfo      fi = new FileInfo(path);

            if (di.Exists)
            {
                await SearchImages(fdb, rasterFC, di, providers);

                //if (_recalculateExtent) fdb.CalculateSpatialIndex(rasterFC, 100);
            }
            else if (fi.Exists)
            {
                if (!await InsertImage(fdb, rasterFC, fi, providers))
                {
                    return(false);
                }
                //if (_recalculateExtent) fdb.CalculateSpatialIndex(rasterFC, 100);
            }

            if (!_cancelTracker.Continue)
            {
                _errMsg = "Canceled by user...";
                return(false);
            }

            return(true);
        }
Пример #9
0
 public void Dispose()
 {
     //System.Windows.Forms.MessageBox.Show("Dataset Dispose "+this.DatasetName);
     if (_fdb != null)
     {
         _fdb.Dispose();
         _fdb = null;
     }
 }
Пример #10
0
        async public Task <IExplorerObject> CreateExplorerObject(IExplorerObject parentExObject)
        {
            SQLiteFDBDatasetExplorerObject parent = (SQLiteFDBDatasetExplorerObject)parentExObject;

            IFeatureDataset dataset = await parent.GetInstanceAsync() as IFeatureDataset;

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

            AccessFDB fdb = dataset.Database as AccessFDB;

            if (fdb == null)
            {
                return(null);
            }

            List <ExplorerDialogFilter> filters = new List <ExplorerDialogFilter>();

            filters.Add(new OpenFeatureclassFilter());
            ExplorerDialog dlg = new ExplorerDialog("Select Featureclass", filters, true);

            IExplorerObject ret = null;

            if (dlg.ShowDialog() == DialogResult.OK &&
                dlg.ExplorerObjects != null)
            {
                foreach (IExplorerObject exObj in dlg.ExplorerObjects)
                {
                    var exObjectInstance = await exObj?.GetInstanceAsync();

                    if (exObjectInstance is IFeatureClass)
                    {
                        int fcid = await fdb.CreateLinkedFeatureClass(dataset.DatasetName, (IFeatureClass)exObjectInstance);

                        if (ret == null)
                        {
                            IDatasetElement element = await dataset.Element(((IFeatureClass)exObjectInstance).Name);

                            if (element != null)
                            {
                                ret = new SQLiteFDBFeatureClassExplorerObject(
                                    parent,
                                    parent.FileName,
                                    parent.Name,
                                    element);
                            }
                        }
                    }
                }
            }
            return(ret);
        }
Пример #11
0
        internal AccessFDBDataset(AccessFDB fdb, string dsname, ISpatialIndexDef sIndexDef)
            : this()
        {
            if (fdb == null)
            {
                return;
            }

            ConnectionString = "mdb=" + fdb.ConnectionString + ";dsname=" + dsname;
            Open();
        }
Пример #12
0
        protected IFeatureClass CreateTargetFeatureclass(IGeometryDef geomDef, IFields fields)
        {
            IFeatureClass sFc  = SourceFeatureClass;
            BinaryTreeDef sDef = null;

            if (sFc.Dataset != null && sFc.Dataset.Database is AccessFDB)
            {
                AccessFDB sFdb = (AccessFDB)sFc.Dataset.Database;
                sDef = sFdb.BinaryTreeDef(sFc.Name);
            }

            TargetDatasetElement e  = this.TargetDatasetElement;
            IDataset             ds = this.TargetDataset;
            IFeatureDatabase     db = this.TargetFeatureDatabase;

            if (db.CreateFeatureClass(ds.DatasetName, e.Title, geomDef, fields) == -1)
            {
                throw new Exception("Can't create target featureclass:\n" + db.lastErrorMsg);
            }

            IDatasetElement element = ds[e.Title];

            if (element == null || !(element.Class is IFeatureClass))
            {
                throw new Exception("Can't open created featureclass");
            }

            IFeatureClass tFc = element.Class as IFeatureClass;

            if (db is AccessFDB)
            {
                int maxAllowedLevel = ((db is SqlFDB) ? 62 : 30);
                if (sDef == null)
                {
                    IEnvelope sEnv = sFc.Envelope;
                    sDef = (sEnv != null) ? new BinaryTreeDef(sFc.Envelope, 10, 200, 0.55) : new BinaryTreeDef(new Envelope());
                }
                if (sDef.Bounds != null &&
                    sDef.SpatialReference != null &&
                    !sDef.SpatialReference.Equals(tFc.SpatialReference))
                {
                    if (!sDef.ProjectTo(tFc.SpatialReference))
                    {
                        throw new Exception("Can't project SpatialIndex Boundaries...");
                    }
                }
                ((AccessFDB)db).SetSpatialIndexBounds(tFc.Name, "BinaryTree2", sDef.Bounds, sDef.SplitRatio, sDef.MaxPerNode, Math.Min(sDef.MaxLevel, maxAllowedLevel));
                ((AccessFDB)db).SetFeatureclassExtent(tFc.Name, sDef.Bounds);
            }

            return(tFc);
        }
Пример #13
0
        async private Task BuildList()
        {
            lstDatasets.Items.Clear();
            AccessFDB fdb = null;

            switch (_providerId)
            {
            case "mssql":
                fdb = new SqlFDB();
                break;

            case "postgres":
                fdb = new pgFDB();
                break;

            case "sqlite":
                fdb = new SQLiteFDB();
                break;
            }

            if (fdb == null)
            {
                return;
            }

            if (!await fdb.Open(this.ConnectionString))
            {
                MessageBox.Show(fdb.LastErrorMessage, "Error");
                return;
            }

            string[] dsnames = await fdb.DatasetNames();

            if (dsnames != null)
            {
                foreach (string dsname in dsnames)
                {
                    var isImageDatasetResult = await fdb.IsImageDataset(dsname);

                    ListViewItem item = new ListViewItem(
                        dsname, isImageDatasetResult.isImageDataset ? 1 : 0);

                    lstDatasets.Items.Add(item);

                    if (item.Text == _dsname)
                    {
                        lstDatasets.SelectedIndices.Add(lstDatasets.Items.Count - 1);
                    }
                }
            }
        }
Пример #14
0
        static bool CalculateExtent(IFeatureDataset ds)
        {
            Console.WriteLine("\nCalculete new Extent");
            AccessFDB fdb = ds.Database as AccessFDB;

            if (fdb != null)
            {
                IFeatureClass fc = fdb.GetFeatureclass(ds.DatasetName, ds.DatasetName + "_IMAGE_POLYGONS");
                fdb.CalculateExtent(fc);
                //fdb.ShrinkSpatialIndex(ds.DatasetName + "_IMAGE_POLYGONS");
                //fdb.RebuildSpatialIndex(ds.DatasetName + "_IMAGE_POLYGONS");
            }
            return(true);
        }
Пример #15
0
        async public Task <bool> LoadAsync(IPersistStream stream)
        {
            string connectionString = (string)stream.Load("connectionstring", "");

            if (_fdb != null)
            {
                _fdb.Dispose();
                _fdb = null;
            }

            await this.SetConnectionString(connectionString);

            return(await this.Open());
        }
        public IExplorerObject CreateExplorerObject(IExplorerObject parentExObject)
        {
            SqlFDBDatasetExplorerObject parent = (SqlFDBDatasetExplorerObject)parentExObject;

            IFeatureDataset dataset = parent.Object as IFeatureDataset;

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

            AccessFDB fdb = dataset.Database as AccessFDB;

            if (fdb == null)
            {
                return(null);
            }

            List <ExplorerDialogFilter> filters = new List <ExplorerDialogFilter>();

            filters.Add(new OpenFeatureclassFilter());
            ExplorerDialog dlg = new ExplorerDialog("Select Featureclass", filters, true);

            IExplorerObject ret = null;

            if (dlg.ShowDialog() == DialogResult.OK &&
                dlg.ExplorerObjects != null)
            {
                foreach (IExplorerObject exObj in dlg.ExplorerObjects)
                {
                    if (exObj.Object is IFeatureClass)
                    {
                        int fcid = fdb.CreateLinkedFeatureClass(dataset.DatasetName, (IFeatureClass)exObj.Object);
                        if (ret == null)
                        {
                            IDatasetElement element = dataset[((IFeatureClass)exObj.Object).Name];
                            if (element != null)
                            {
                                ret = new AccessFDBFeatureClassExplorerObject(
                                    parentExObject as AccessFDBDatasetExplorerObject,
                                    ((AccessFDBDatasetExplorerObject)parentExObject).FileName,
                                    parentExObject.Name,
                                    element);
                            }
                        }
                    }
                }
            }
            return(ret);
        }
Пример #17
0
        static void Truncate(IFeatureDataset ds, string fcname)
        {
            if (!((AccessFDB)ds.Database).TruncateTable(fcname))
            {
                Console.WriteLine("Error: " + ds.lastErrorMsg);
            }

            AccessFDB fdb = ds.Database as AccessFDB;

            if (fdb != null)
            {
                IFeatureClass fc = fdb.GetFeatureclass(ds.DatasetName, ds.DatasetName + "_IMAGE_POLYGONS");
                fdb.CalculateExtent(fc);
                //fdb.RebuildSpatialIndex(ds.DatasetName + "_IMAGE_POLYGONS");
            }
        }
Пример #18
0
        static public bool UpdateLinkedFcDatatables(AccessFDB fdb)
        {
            try
            {
                ICommonDbConnection conn = fdb.DbConnection;

                if (conn != null)
                {
                    #region Add Column "LinkedFcId" to "FDB_FetaureClasses"

                    //System.Data.DataTable schema = conn.GetSchema2("FDB_FeatureClasses");
                    //bool hasColumn = schema.Select("ColumnName='LinkedFcId'").Length > 0;

                    //if (!hasColumn)
                    //{
                    //    fdb.AlterTable("FDB_FeatureClasses", null, new Field()
                    //    {
                    //        name = "LinkedFcId",
                    //        type = FieldType.integer
                    //    });
                    //}

                    // For identify a linked FC: Column SI=Linked, SIVersion=LinkedId

                    #endregion

                    #region Add "FDB_LinkedFeatureClasses"

                    var fields = new Fields();
                    fields.Add(new Field("ID", FieldType.ID));
                    fields.Add(new Field("Plugin", FieldType.guid));
                    fields.Add(new Field("Connection", FieldType.String, 4000));

                    if (!fdb.CreateIfNotExists("FDB_LinkedConnections", fields))
                    {
                        throw new Exception("Can't create 'FDB_LinkedConnections':" + fdb.lastErrorMsg);
                    }
                    #endregion
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(true);
        }
        public IExplorerObject CreateExplorerObject(IExplorerObject parentExObject)
        {
            if (!CanCreate(parentExObject))
            {
                return(null);
            }

            if (!(parentExObject.Object is IFeatureDataset) || !(((IDataset)parentExObject.Object).Database is AccessFDB))
            {
                return(null);
            }
            AccessFDB fdb = ((IDataset)parentExObject.Object).Database as AccessFDB;

            FormNewFeatureclass dlg = new FormNewFeatureclass(parentExObject.Object as IFeatureDataset);

            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return(null);
            }

            IGeometryDef gDef = dlg.GeometryDef;

            int FCID = fdb.CreateFeatureClass(
                parentExObject.Name,
                dlg.FeatureclassName,
                gDef,
                dlg.Fields);

            if (FCID < 0)
            {
                MessageBox.Show("ERROR: " + fdb.lastErrorMsg);
                return(null);
            }

            ISpatialIndexDef sIndexDef = fdb.SpatialIndexDef(parentExObject.Name);

            fdb.SetSpatialIndexBounds(dlg.FeatureclassName, "BinaryTree2", dlg.SpatialIndexExtents, 0.55, 200, dlg.SpatialIndexLevels);

            IDatasetElement element = ((IFeatureDataset)parentExObject.Object)[dlg.FeatureclassName];

            return(new AccessFDBFeatureClassExplorerObject(
                       parentExObject as AccessFDBDatasetExplorerObject,
                       _filename,
                       parentExObject.Name,
                       element));
        }
Пример #20
0
        public FormRebuildSpatialIndexDef(AccessFDB fdb, IFeatureClass fc)
        {
            InitializeComponent();

            _fdb = fdb;
            _fc  = fc;

            if (_fdb != null && _fc != null)
            {
                BinaryTreeDef def = _fdb.BinaryTreeDef(_fc.Name);

                if (def != null)
                {
                    spatialIndexControl1.Extent = def.Bounds;
                    spatialIndexControl1.Levels = def.MaxLevel;
                }
            }
        }
Пример #21
0
        async private void btnChangeConnectionString_Click(object sender, EventArgs e)
        {
            AccessFDB fdb = null;

            switch (_providerId)
            {
            case "mssql":
                fdb = new SqlFDB();
                break;

            case "postgres":
                fdb = new pgFDB();
                break;

            case "sqlite":
                fdb = new SQLiteFDB();
                break;
            }

            if (fdb == null)
            {
                return;
            }

            await fdb.Open(_connectionString);

            DbConnectionString dbConnStr = new DbConnectionString();

            dbConnStr.UseProviderInConnectionString = false;
            FormConnectionString dlg = (dbConnStr.TryFromConnectionString("mssql", fdb.ConnectionString) ?
                                        new FormConnectionString(dbConnStr) : new FormConnectionString());

            dlg.ProviderID = _providerId;
            dlg.UseProviderInConnectionString = false;

            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                dbConnStr         = dlg.DbConnectionString;
                _connectionString = dbConnStr.ConnectionString;

                await BuildList();
            }
        }
        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);
                //}
            }
        }
        public IExplorerObject CreateExplorerObject(IExplorerObject parentExObject)
        {
            if (!CanCreate(parentExObject))
            {
                return(null);
            }

            FormNewDataset dlg = new FormNewDataset();

            dlg.IndexTypeIsEditable = false;
            if (dlg.ShowDialog() != DialogResult.OK)
            {
                return(null);
            }

            AccessFDB fdb = new AccessFDB();

            fdb.Open(parentExObject.FullName);
            int dsID = -1;

            string datasetName = dlg.DatasetName;

            switch (dlg.DatasetType)
            {
            case FormNewDataset.datasetType.FeatureDataset:
                dsID = fdb.CreateDataset(datasetName, dlg.SpatialReferene);
                break;

            case FormNewDataset.datasetType.ImageDataset:
                dsID        = fdb.CreateImageDataset(datasetName, dlg.SpatialReferene, null, dlg.ImageSpace, dlg.AdditionalFields);
                datasetName = "#" + datasetName;
                break;
            }

            if (dsID == -1)
            {
                MessageBox.Show(fdb.lastErrorMsg, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(null);
            }

            return(new AccessFDBDatasetExplorerObject(parentExObject, parentExObject.FullName, datasetName));
        }
Пример #24
0
        async static public Task <FormRebuildSpatialIndexDef> Create(AccessFDB fdb, IFeatureClass fc)
        {
            var dlg = new FormRebuildSpatialIndexDef();

            dlg._fdb = fdb;
            dlg._fc  = fc;

            if (dlg._fdb != null && dlg._fc != null)
            {
                BinaryTreeDef def = await dlg._fdb.BinaryTreeDef(dlg._fc.Name);

                if (def != null)
                {
                    dlg.spatialIndexControl1.Extent = def.Bounds;
                    dlg.spatialIndexControl1.Levels = def.MaxLevel;
                }
            }

            return(dlg);
        }
Пример #25
0
        public void Load(IPersistStream stream)
        {
            string connectionString = (string)stream.Load("connectionstring", "");

            if (_fdb != null)
            {
                _fdb.Dispose();
                _fdb = null;
            }

            this.ConnectionString = connectionString;
            this.Open();

            /*
             * if (_layers == null) _layers = new List<IDatasetElement>();
             *
             * IFeatureLayer layer;
             * while ((layer = (IFeatureLayer)stream.Load("IFeatureLayer", null, new AccessFDBDatasetElement(_fdb,this, null))) != null)
             * {
             *  IDatasetElement e = this[layer.Title];
             *  if (e is IFeatureLayer)
             *  {
             *      IFeatureLayer l = (IFeatureLayer)e;
             *
             *      l.MinimumScale = layer.MinimumScale;
             *      l.MaximumScale = layer.MaximumScale;
             *      l.Visible = layer.Visible;
             *
             *      l.FeatureRenderer = layer.FeatureRenderer;
             *      l.LabelRenderer = layer.LabelRenderer;
             *
             *      _layers.Add(l);
             *  }
             *  if (e == null && layer is AccessFDBDatasetElement)
             *  {
             *      ((AccessFDBDatasetElement)layer).SetEmpty();
             *      _layers.Add(layer);
             *  }
             * }
             * */
        }
Пример #26
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;
                }
            }
        }
        private void MakeGui()
        {
            cmbDatabaseViews.Items.Clear();
            cmbRefFeatureClass.Items.Clear();

            if (_dataset == null)
            {
                return;
            }

            foreach (IDatasetElement element in _dataset.Elements)
            {
                if (element.Class is IFeatureClass)
                {
                    if (element.Class.Name.Contains("@"))
                    {
                        continue;
                    }
                    cmbRefFeatureClass.Items.Add(new FeatureClassItem((IFeatureClass)element.Class));
                }
            }

            AccessFDB fdb = _dataset.Database as AccessFDB;

            if (fdb != null)
            {
                foreach (string view in fdb.DatabaseViews())
                {
                    IFields fields = fdb.TableFields(view);
                    if (fields == null ||
                        fields.FindField("FDB_OID") == null ||
                        fields.FindField("FDB_SHAPE") == null ||
                        fields.FindField("FDB_NID") == null)
                    {
                        continue;
                    }

                    cmbDatabaseViews.Items.Add(view);
                }
            }
        }
Пример #28
0
        private void btnChangeConnectionString_Click(object sender, EventArgs e)
        {
            AccessFDB fdb = (_providerId == "mssql" ? new SqlFDB() : new AccessFDB());

            fdb.Open(_connectionString);

            DbConnectionString dbConnStr = new DbConnectionString();

            dbConnStr.UseProviderInConnectionString = false;
            FormConnectionString dlg = (dbConnStr.TryFromConnectionString("mssql", fdb.ConnectionString) ?
                                        new FormConnectionString(dbConnStr) : new FormConnectionString());

            dlg.ProviderID = _providerId;
            dlg.UseProviderInConnectionString = false;

            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                dbConnStr         = dlg.DbConnectionString;
                _connectionString = dbConnStr.ConnectionString;

                BuildList();
            }
        }
Пример #29
0
 public AccessFDBFeatureClass(AccessFDB fdb, IDataset dataset, GeometryDef geomDef, BinarySearchTree tree)
     : this(fdb, dataset, geomDef)
 {
     _searchTree = tree;
 }
Пример #30
0
 public AccessFDBDataset()
 {
     _addedLayers = new List <string>();
     _fdb         = new AccessFDB();
 }