コード例 #1
0
 public pgImageDatasetImageClass(pgFDB fdb, string dsname, int ID, Polygon polygon)
 {
     _fdb     = fdb;
     _ID      = ID;
     _polygon = polygon;
     _dsname  = dsname;
 }
コード例 #2
0
        public pgImageCatalogClass(IRasterDataset dataset, pgFDB fdb, IFeatureClass polygonsFC, ISpatialReference sRef, string imageSpace)
        {
            _dataset = dataset;
            _dsname  = dataset.DatasetName;
            _fdb     = fdb;
            _fc      = polygonsFC;
            calcPolygon(polygonsFC.Envelope);
            _sRef       = sRef;
            _imageSpace = (imageSpace == null) ? String.Empty : imageSpace;

            if (_imageSpace != String.Empty && imageSpace.ToLower() != "database")
            {
                try
                {
                    DirectoryInfo di = new DirectoryInfo(_imageSpace);
                    if (di.Exists)
                    {
                        _imageSpaceType = ImageSpaceType.FileSystem;
                    }
                    else
                    {
                        _imageSpaceType = ImageSpaceType.Invalid;
                    }
                }
                catch
                {
                    _imageSpaceType = ImageSpaceType.Invalid;
                }
            }
        }
コード例 #3
0
        async static public Task <pgFeatureClass> Create(pgFDB fdb, IDataset dataset, GeometryDef geomDef, BinarySearchTree tree)
        {
            var fc = await pgFeatureClass.Create(fdb, dataset, geomDef);

            fc._searchTree = tree;

            return(fc);
        }
コード例 #4
0
ファイル: pgDataset.cs プロジェクト: jugstalt/gview5
 public void Dispose()
 {
     if (_fdb != null)
     {
         _fdb.Dispose();
         _fdb = null;
     }
 }
コード例 #5
0
            public NetworkFeatureCursor(pgFDB fdb, string networkName, List <IFeatureClass> edgeFcs, IFeatureClass nodeFc, IQueryFilter filter)
            {
                _fdb         = fdb;
                _networkName = networkName;

                _edgeFcs = edgeFcs;
                _nodeFc  = nodeFc;
                _filter  = filter;
            }
コード例 #6
0
ファイル: pgDataset.cs プロジェクト: jugstalt/gview5
        async static internal Task <pgDataset> Create(pgFDB fdb, string dsname)
        {
            var ds = new pgDataset();

            await ds.SetConnectionString(fdb.DatabaseConnectionString + ";dsname=" + dsname);

            await ds.Open();

            return(ds);
        }
コード例 #7
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor = Cursors.WaitCursor;

                pgFDB fdb = new pgFDB();

                UserData parameters = _advancedSettings.ToUserData();
                if (btnOnlyRepository.Checked)
                {
                    parameters.SetUserData("CreateDatabase", false);
                }

                fdb.Open(ConnectionString);

                if (!fdb.Create(txtDatabase.Text, parameters))
                {
                    MessageBox.Show(fdb.lastErrorMsg, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                //if (chkCreateReplicationDatamodel.Checked == true)
                {
                    string errMsg;
                    if (!gView.Framework.Offline.Replication.CreateRelicationModel(fdb, out errMsg))
                    {
                        MessageBox.Show("RepliCreateRelicationModel failed:\n" + errMsg, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                if (chkCreateConnection.Checked)
                {
                    string           connStr = FullConnectionString;
                    ConfigTextStream stream  = new ConfigTextStream("postgrefdb_connections", true, true);
                    string           id      = txtObject.Text;
                    stream.Write(FullConnectionString, ref id);
                    stream.Close();

                    _resultExObject = new ExplorerObject(null, id, FullConnectionString);
                }

                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("FATAL ERROR: " + ex.Message);
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
コード例 #8
0
        public void Load(IPersistStream stream)
        {
            string connectionString = (string)stream.Load("connectionstring", "");

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

            this.ConnectionString = connectionString;
            this.Open();
        }
コード例 #9
0
ファイル: FormChangeDataset.cs プロジェクト: jugstalt/gview5
        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);
                    }
                }
            }
        }
コード例 #10
0
ファイル: pgFeatureClass.cs プロジェクト: jugstalt/gViewGisOS
        public pgFeatureClass(pgFDB fdb, IDataset dataset, GeometryDef geomDef)
        {
            _fdb = fdb;

            _dataset = dataset;
            _geomDef = (geomDef != null) ? geomDef : new GeometryDef();

            if (_geomDef != null && _geomDef.SpatialReference == null && dataset is IFeatureDataset)
            {
                _geomDef.SpatialReference = ((IFeatureDataset)dataset).SpatialReference;
            }

            m_fields = new Fields();
        }
コード例 #11
0
ファイル: pgDataset.cs プロジェクト: jugstalt/gview5
        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());
        }
コード例 #12
0
        async static public Task <pgFeatureClass> Create(pgFDB fdb, IDataset dataset, GeometryDef geomDef)
        {
            var fc = new pgFeatureClass();

            fc._fdb = fdb;

            fc._dataset = dataset;
            fc._geomDef = (geomDef != null) ? geomDef : new GeometryDef();

            if (fc._geomDef != null && fc._geomDef.SpatialReference == null && dataset is IFeatureDataset)
            {
                fc._geomDef.SpatialReference = await((IFeatureDataset)dataset).GetSpatialReference();
            }

            fc.m_fields = new Fields();

            return(fc);
        }
コード例 #13
0
ファイル: FormChangeDataset.cs プロジェクト: jugstalt/gview5
        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();
            }
        }
コード例 #14
0
ファイル: pgDataset.cs プロジェクト: jugstalt/gview5
        async public Task <bool> SetConnectionString(string value)
        {
            _connStr = value;
            if (value == null)
            {
                return(false);
            }

            while (_connStr.IndexOf(";;") != -1)
            {
                _connStr = _connStr.Replace(";;", ";");
            }

            _dsname = ConfigTextStream.ExtractValue(value, "dsname");
            _addedLayers.Clear();
            foreach (string layername in ConfigTextStream.ExtractValue(value, "layers").Split('@'))
            {
                if (layername == "")
                {
                    continue;
                }
                if (_addedLayers.IndexOf(layername) != -1)
                {
                    continue;
                }
                _addedLayers.Add(layername);
            }
            if (_fdb == null)
            {
                _fdb = new pgFDB();
            }

            _fdb.DatasetRenamed      += new gView.DataSources.Fdb.MSAccess.AccessFDB.DatasetRenamedEventHandler(SqlFDB_DatasetRenamed);
            _fdb.FeatureClassRenamed += new gView.DataSources.Fdb.MSAccess.AccessFDB.FeatureClassRenamedEventHandler(SqlFDB_FeatureClassRenamed);
            _fdb.TableAltered        += new gView.DataSources.Fdb.MSAccess.AccessFDB.AlterTableEventHandler(SqlFDB_TableAltered);
            await _fdb.Open(_connStr);

            return(true);
        }
コード例 #15
0
ファイル: Program.cs プロジェクト: jugstalt/gViewGisOS
        static void Main(string[] args)
        {
            #region Parse Parameters
            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i])
                {
                case "-add":
                    if (job != jobs.unknown)
                    {
                        Console.WriteLine("Can't do more than one job. Run programm twice...");
                        return;
                    }
                    job = jobs.add;
                    break;

                case "-clean":
                    if (job != jobs.unknown)
                    {
                        Console.WriteLine("Can't do more than one job. Run programm twice...");
                        return;
                    }
                    job = jobs.removeUnexisting;
                    break;

                case "-truncate":
                    if (job != jobs.unknown)
                    {
                        Usage();
                        Console.WriteLine("Can't do more than one job. Run programm twice...");
                        return;
                    }
                    job = jobs.truncate;
                    break;

                case "-s":
                    connectinString = args[++i];
                    break;

                case "-db":
                    dbType = args[++i].ToLower();
                    break;

                case "-provider":
                    provider = args[++i].ToLower();
                    break;

                case "-fn":
                    if (rootPath != String.Empty)
                    {
                        Usage();
                        Console.WriteLine("Filename OR Rootdirectory...");
                        return;
                    }
                    fileName = args[++i];
                    break;

                case "-rd":
                    if (fileName != String.Empty)
                    {
                        Usage();
                        Console.WriteLine("Filename OR Rootdirectory...");
                        return;
                    }
                    rootPath = args[++i];
                    break;

                case "-f":
                    Filters = args[++i];
                    break;
                }
            }
            #endregion

            #region Check Parameters
            if (connectinString == String.Empty)
            {
                Usage();
                Console.WriteLine("No connection string...");
                return;
            }
            switch (job)
            {
            case jobs.removeUnexisting:
            case jobs.truncate:
                break;

            case jobs.add:
                if (fileName == String.Empty &&
                    (rootPath == String.Empty || Filters == String.Empty))
                {
                    Usage();
                    Console.WriteLine("No file or rootdirectory and filter defined...");
                    return;
                }
                break;

            case jobs.unknown:
                Usage();
                Console.WriteLine("No job defined...");
                return;
            }
            #endregion

            DateTime dt = DateTime.Now;

            string mdb     = ConfigTextStream.ExtractValue(connectinString, "mdb");
            string dsname  = ConfigTextStream.ExtractValue(connectinString, "dsname");
            string connStr = ConfigTextStream.RemoveValue(connectinString, "dsname");

            IFeatureDataset ds = null;
            if (mdb != String.Empty)
            {
                AccessFDB fdb = new AccessFDB();
                fdb.Open(connStr);
                IFeatureDataset dataset = fdb[dsname];
                if (dataset == null)
                {
                    Console.WriteLine("Error opening dataset: " + fdb.lastErrorMsg);
                    return;
                }
                //dataset.ConnectionString = connectinString;
                if (!dataset.Open())
                {
                    Console.WriteLine("Error opening dataset: " + dataset.lastErrorMsg);
                    return;
                }
                ds = dataset;
            }
            else if (dbType == "sql")
            {
                SqlFDB fdb = new SqlFDB();
                fdb.Open(connStr);
                IFeatureDataset dataset = fdb[dsname];
                if (dataset == null)
                {
                    Console.WriteLine("Error opening dataset: " + fdb.lastErrorMsg);
                    return;
                }
                //dataset.ConnectionString = connectinString;
                if (!dataset.Open())
                {
                    Console.WriteLine("Error opening dataset: " + dataset.lastErrorMsg);
                    return;
                }
                ds = dataset;
            }
            else if (dbType == "postgres")
            {
                pgFDB fdb = new pgFDB();
                fdb.Open(connStr);
                IFeatureDataset dataset = fdb[dsname];
                if (dataset == null)
                {
                    Console.WriteLine("Error opening dataset: " + fdb.lastErrorMsg);
                    return;
                }
                //dataset.ConnectionString = connectinString;
                if (!dataset.Open())
                {
                    Console.WriteLine("Error opening dataset: " + dataset.lastErrorMsg);
                    return;
                }
                ds = dataset;
            }
            else if (dbType == "sqlite")
            {
                SQLiteFDB fdb = new SQLiteFDB();
                fdb.Open(connStr);
                IFeatureDataset dataset = fdb[dsname];
                if (dataset == null)
                {
                    Console.WriteLine("Error opening dataset: " + fdb.lastErrorMsg);
                    return;
                }
                //dataset.ConnectionString = connectinString;
                if (!dataset.Open())
                {
                    Console.WriteLine("Error opening dataset: " + dataset.lastErrorMsg);
                    return;
                }
                ds = dataset;
            }

            IRasterFileDataset rds = null;
            if (provider == "gdal")
            {
                rds = PlugInManager.Create(new Guid("43DFABF1-3D19-438c-84DA-F8BA0B266592")) as IRasterFileDataset;
            }
            else if (provider == "raster")
            {
                rds = PlugInManager.Create(new Guid("D4812641-3F53-48eb-A66C-FC0203980C79")) as IRasterFileDataset;
            }

            Dictionary <string, Guid> providers = new Dictionary <string, Guid>();
            if (rds != null)
            {
                foreach (string format in rds.SupportedFileFilter.Split('|'))
                {
                    string extension = format;

                    int pos = format.LastIndexOf(".");
                    if (pos > 0)
                    {
                        extension = format.Substring(pos, format.Length - pos);
                    }

                    providers.Add(extension, PlugInManager.PlugInID(rds));
                    Console.WriteLine("Provider " + extension + ": " + rds.ToString() + " {" + PlugInManager.PlugInID(rds).ToString() + "}");
                }
            }
            if (providers.Count == 0)
            {
                providers = null;
            }

            switch (job)
            {
            case jobs.truncate:
                Truncate(ds, dsname + "_IMAGE_POLYGONS");
                break;

            case jobs.removeUnexisting:
                RemoveUnexisting(ds);
                CalculateExtent(ds);
                break;

            case jobs.add:
                if (fileName != String.Empty)
                {
                    if (!ImportFiles(ds, fileName.Split(';'), providers))
                    {
                        if (!continueOnError)
                        {
                            return;
                        }
                    }
                }
                else if (rootPath != String.Empty && Filters != String.Empty)
                {
                    if (!ImportDirectory(ds, new DirectoryInfo(rootPath), Filters.Split(';'), providers))
                    {
                        if (!continueOnError)
                        {
                            return;
                        }
                    }
                }
                CalculateExtent(ds);
                break;
            }
            Console.WriteLine("\n" + ((TimeSpan)(DateTime.Now - dt)).TotalSeconds + "s");
            Console.WriteLine("done...");
        }
コード例 #16
0
 internal pgDataset(pgFDB fdb, string dsname)
     : this()
 {
     ConnectionString = fdb.DatabaseConnectionString + ";dsname=" + dsname;
     Open();
 }
コード例 #17
0
ファイル: pgDataset.cs プロジェクト: jugstalt/gview5
 public pgDataset()
 {
     _addedLayers = new List <string>();
     _fdb         = new pgFDB();
 }
コード例 #18
0
        public pgNetworkFeatureClass(pgFDB fdb, IDataset dataset, string name, GeometryDef geomDef)
        {
            _fdb  = fdb;
            _fcid = _fdb.FeatureClassID(_fdb.DatasetID(dataset.DatasetName), name);

            _dataset = dataset;
            _geomDef = (geomDef != null) ? geomDef : new GeometryDef();

            if (_geomDef != null && _geomDef.SpatialReference == null && dataset is IFeatureDataset)
            {
                _geomDef.SpatialReference = ((IFeatureDataset)dataset).SpatialReference;
            }

            _fields = new Fields();

            _name = _aliasname = name;

            IDatasetElement element = _dataset[_name + "_Nodes"];

            if (element != null)
            {
                _nodeFc = element.Class as IFeatureClass;
            }

            element = _dataset[_name + "_ComplexEdges"];
            if (element != null && element.Class is IFeatureClass)
            {
                _edgeFcs.Add(-1, (IFeatureClass)element.Class);
            }

            DataTable tab = _fdb.Select("\"FCID\"", "\"FDB_NetworkClasses\"", "\"NetworkId\"=" + _fcid);

            if (tab != null && tab.Rows.Count > 0)
            {
                StringBuilder where = new StringBuilder();
                where.Append("\"GeometryType\"=" + ((int)geometryType.Polyline).ToString() + " AND \"ID\" in(");
                for (int i = 0; i < tab.Rows.Count; i++)
                {
                    if (i > 0)
                    {
                        where.Append(",");
                    }
                    where.Append(tab.Rows[i]["fcid"].ToString());
                }
                where.Append(")");

                tab = _fdb.Select("\"ID\",\"Name\"", "\"FDB_FeatureClasses\"", where.ToString());
                if (tab != null)
                {
                    foreach (DataRow row in tab.Rows)
                    {
                        element = _dataset[row["name"].ToString()];
                        if (element != null && element.Class is IFeatureClass)
                        {
                            _edgeFcs.Add((int)row["id"], element.Class as IFeatureClass);
                        }
                    }
                }
            }

            _weights = _fdb.GraphWeights(name);
            Dictionary <Guid, string> weightTableNames             = null;
            Dictionary <Guid, GraphWeightDataType> weightDataTypes = null;

            if (_weights != null && _weights.Count > 0)
            {
                weightTableNames = new Dictionary <Guid, string>();
                weightDataTypes  = new Dictionary <Guid, GraphWeightDataType>();
                foreach (IGraphWeight weight in _weights)
                {
                    if (weight == null)
                    {
                        continue;
                    }

                    weightTableNames.Add(weight.Guid, _fdb.TableName(_name + "_Weights_" + weight.Guid.ToString("N").ToLower()));
                    weightDataTypes.Add(weight.Guid, weight.DataType);
                }
            }
            _pageManager = new NetworkObjectSerializer.PageManager(
                gView.Framework.Db.DataProvider.PostgresProvider,
                _fdb.ConnectionString, _name,
                _fdb.TableName("FC_" + _name),
                _fdb.TableName(_name + "_Edges"),
                _fdb.TableName("FC_" + name + "_Nodes"),
                weightTableNames, weightDataTypes, _fdb
                );
        }
コード例 #19
0
ファイル: pgFeatureClass.cs プロジェクト: jugstalt/gViewGisOS
 public pgFeatureClass(pgFDB fdb, IDataset dataset, GeometryDef geomDef, BinarySearchTree tree)
     : this(fdb, dataset, geomDef)
 {
     _searchTree = tree;
 }
コード例 #20
0
 public pgFDBGraphTableAdapter(pgFDB fdb, pgNetworkFeatureClass nfc)
 {
     _connString = fdb.ConnectionString;
     _nfc        = nfc;
     _name       = _nfc.Name; //name;
 }