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); } } } }
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)); }
public AccessFDBImageDatasetImageClass(AccessFDB fdb, string dsname, int ID, Polygon polygon) { _fdb = fdb; _ID = ID; _polygon = polygon; _dsname = dsname; }
//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(); }
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); } }
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); }
public void Dispose() { //System.Windows.Forms.MessageBox.Show("Dataset Dispose "+this.DatasetName); if (_fdb != null) { _fdb.Dispose(); _fdb = null; } }
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); }
internal AccessFDBDataset(AccessFDB fdb, string dsname, ISpatialIndexDef sIndexDef) : this() { if (fdb == null) { return; } ConnectionString = "mdb=" + fdb.ConnectionString + ";dsname=" + dsname; Open(); }
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); }
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); } } } }
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); }
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); }
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"); } }
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)); }
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; } } }
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)); }
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); }
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); * } * } * */ }
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); } } }
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(); } }
public AccessFDBFeatureClass(AccessFDB fdb, IDataset dataset, GeometryDef geomDef, BinarySearchTree tree) : this(fdb, dataset, geomDef) { _searchTree = tree; }
public AccessFDBDataset() { _addedLayers = new List <string>(); _fdb = new AccessFDB(); }