Пример #1
0
        public void Simplify()
        {
            if (_renderers == null || _renderers.Count == 0)
            {
                return;
            }

            foreach (IFeatureRenderer renderer in _renderers)
            {
                if (renderer is ISimplify)
                {
                    ((ISimplify)renderer).Simplify();
                }
            }

            #region SimpleRenderer zusammenfassen
            bool allSimpleRenderers = true;
            foreach (IRenderer renderer in _renderers)
            {
                if (!(renderer is SimpleRenderer))
                {
                    allSimpleRenderers = false;
                    break;
                }
            }

            if (allSimpleRenderers)
            {
                IFeatureRenderer renderer = _renderers[0];
                if (_renderers.Count > 1)
                {
                    ISymbolCollection symCol = PlugInManager.Create(new Guid("062AD1EA-A93C-4c3c-8690-830E65DC6D91")) as ISymbolCollection;
                    foreach (IRenderer sRenderer in _renderers)
                    {
                        if (((SimpleRenderer)renderer).Symbol != null)
                        {
                            symCol.AddSymbol(((SimpleRenderer)renderer).Symbol);
                        }
                    }
                    ((SimpleRenderer)renderer).Symbol = (ISymbol)symCol;
                    _renderers.Clear();
                    _renderers.Add(renderer);
                }
            }
            #endregion

            #region Combine Renderers
            for (int i = 0; i < _renderers.Count; i++)
            {
                for (int j = i + 1; j < _renderers.Count; j++)
                {
                    if (_renderers[i].Combine(_renderers[j]))
                    {
                        _renderers.RemoveAt(j);
                        j--;
                    }
                }
            }
            #endregion
        }
Пример #2
0
        private NetworkRenderer(bool init)
        {
            _renderers = new RendererGroup();

            if (init == true)
            {
                _renderers.Add(PlugInManager.Create(KnownObjects.Carto_SimpleRenderer) as IFeatureRenderer);  // Edges
                _renderers.Add(PlugInManager.Create(KnownObjects.Carto_SimpleRenderer) as IFeatureRenderer);  // Simple Nodes
                _renderers.Add(PlugInManager.Create(KnownObjects.Carto_SimpleRenderer) as IFeatureRenderer);  // Switches On
                _renderers.Add(PlugInManager.Create(KnownObjects.Carto_SimpleRenderer) as IFeatureRenderer);  // Switches Off

                foreach (IFeatureRenderer renderer in _renderers)
                {
                    geometryType geomType = geometryType.Polyline;
                    if (_renderers.IndexOf(renderer) > 0)
                    {
                        geomType = geometryType.Point;
                    }

                    if (renderer is ISymbolCreator && renderer is IFeatureRenderer2)
                    {
                        ((IFeatureRenderer2)renderer).Symbol = ((ISymbolCreator)renderer).CreateStandardSymbol(geomType);
                    }
                }
            }
        }
Пример #3
0
        async public Task SetSerialize(Serialized value)
        {
            if (value == null)
            {
                return;
            }

            if (this.FeatureDataset == null)
            {
                IFeatureDataset dataset = PlugInManager.Create(new Guid(value.DatasetGuid)) as IFeatureDataset;
                if (dataset == null)
                {
                    throw new Exception("Unable to crete dataset");
                }
                await dataset.SetConnectionString(value.ConnectionString);

                this.FeatureDataset = dataset;
            }

            _selecteFeturesclasses.Serialize = value.FeatureClasses;
            _tolerance.Serialize             = value.NetworkTolerance;
            await _complexEdges.OnShowWizardPage();

            _complexEdges.Serialize = value.ComplexEdges;
            await _switches.OnShowWizardPage();

            _switches.Serialize    = value.Nodes;
            _edgeWeights.Serialize = value.EdgeWeights;

            var assembly = Assembly.LoadFrom(SystemVariables.ApplicationDirectory + @"\" + value.NetworkCreatorAssembly);

            _networkCreatorType = (assembly.CreateInstance(value.NetworkCreatorType) as INetworkCreator)?.GetType();
        }
Пример #4
0
        public void Execute(ProgressReporterEvent reporter)
        {
            if (_serialized == null)
            {
                throw new Exception("can't execute. No config!");
            }

            #region Instance Creator

            var assembly = Assembly.LoadFrom(SystemVariables.ApplicationDirectory + @"\" + _serialized.NetworkCreatorAssembly);
            if (assembly == null)
            {
                throw new Exception("Assembly not found: " + _serialized.NetworkCreatorAssembly);
            }
            var creator = assembly.CreateInstance(_serialized.NetworkCreatorType) as INetworkCreator;
            if (creator == null)
            {
                throw new Exception("Type " + _serialized.NetworkCreatorType + " is not a network creator");
            }

            #endregion

            #region Open Dataset

            IFeatureDataset dataset = PlugInManager.Create(new Guid(_serialized.DatasetGuid)) as IFeatureDataset;
            if (dataset == null)
            {
                throw new Exception("Unable to crete dataset");
            }
            dataset.ConnectionString = _serialized.ConnectionString;
            dataset.Open();
            this.FeatureDataset  = dataset;
            this.FeatureDatabase = dataset.Database as IFeatureDatabase3;
            if (this.FeatureDatabase == null)
            {
                throw new Exception("Featuredatabase no implements IFeatureDatabase3");
            }

            #endregion

            creator.NetworkName                 = _serialized.FeatureClasses.NetworkName;
            creator.FeatureDataset              = this.FeatureDataset;
            creator.EdgeFeatureClasses          = this.EdgeFeatureclasses;
            creator.NodeFeatureClasses          = this.NodeFeatureclasses;
            creator.SnapTolerance               = this.SnapTolerance;
            creator.ComplexEdgeFcIds            = this.ComplexEdgeFcIds;
            creator.GraphWeights                = this.GraphWeights;
            creator.SwitchNodeFcIdAndFieldnames = this.SwitchNodeFcIds;
            creator.NodeTypeFcIds               = this.NetworkNodeTypeFcIds;

            if (reporter != null && creator is IProgressReporter)
            {
                ((IProgressReporter)creator).ReportProgress += (ProgressReport progressEventReport) =>
                {
                    reporter(progressEventReport);
                };
            }

            creator.Run();
        }
Пример #5
0
            public EnvelopeGraphics()
            {
                _symbol = PlugInManager.Create(KnownObjects.Symbology_SimpleFillSymbol) as ISymbol;

                if (_symbol is IBrushColor)
                {
                    ((IBrushColor)_symbol).FillColor = Color.FromArgb(155, Color.White);
                }

                _symbol2 = PlugInManager.Create(KnownObjects.Symbology_SimpleLineSymbol) as ISymbol;
                if (_symbol2 is IPenColor)
                {
                    ((IPenColor)_symbol2).PenColor = Color.Blue;
                }
            }
Пример #6
0
        public void Load(IPersistStream stream)
        {
            try
            {
                Guid guid = new Guid(stream.Load("GUID") as string);
                _module = (IMapApplicationModule)PlugInManager.Create(guid);

                if (!(_module is IPersistable))
                {
                    return;
                }
                ((IPersistable)_module).Load(stream);
            }
            catch { }
        }
Пример #7
0
        public void Simplify()
        {
            if (_renderers == null)
            {
                return;
            }

            foreach (IFeatureRenderer renderer in _renderers)
            {
                if (renderer is ISimplify)
                {
                    ((ISimplify)renderer).Simplify();
                }
            }

            #region SimpleRenderer zusammenfassen
            bool allSimpleRenderers = true;
            foreach (IRenderer renderer in _renderers)
            {
                if (!(renderer is ScaleRenderer) && (((ScaleRenderer)renderer).Renderer is SimpleRenderer))
                {
                    allSimpleRenderers = false;
                    break;
                }
            }

            if (allSimpleRenderers && _renderers.Count > 1)
            {
                ScaleRenderer renderer = (ScaleRenderer)_renderers[0];
                if (_renderers.Count > 1)
                {
                    ISymbolCollection symCol = PlugInManager.Create(new Guid("062AD1EA-A93C-4c3c-8690-830E65DC6D91")) as ISymbolCollection;
                    foreach (IRenderer sRenderer in _renderers)
                    {
                        if (((SimpleRenderer)((ScaleRenderer)sRenderer).Renderer).Symbol != null)
                        {
                            symCol.AddSymbol(((SimpleRenderer)((ScaleRenderer)sRenderer).Renderer).Symbol);
                        }
                    }
                    ((SimpleRenderer)((ScaleRenderer)renderer).Renderer).Symbol = (ISymbol)symCol;
                    _renderers.Clear();
                    _renderers.Add(renderer);
                }
            }
            #endregion

            ShrinkScaleRenderes();
        }
Пример #8
0
        public PreviewFeatureLayer(IFeatureClass fc)
        {
            _fc = fc;
            if (_fc == null)
            {
                return;
            }

            this.Title   = fc.Name;
            this.Visible = true;

            _renderer = PlugInManager.Create(KnownObjects.Carto_SimpleRenderer) as IFeatureRenderer2;
            if (_renderer is ISymbolCreator)
            {
                ((IFeatureRenderer2)_renderer).Symbol = ((ISymbolCreator)_renderer).CreateStandardSymbol(_fc.GeometryType);
            }
            _fields = new Fields();
        }
Пример #9
0
        public bool Combine(IRenderer renderer)
        {
            if (renderer is SimpleRenderer && renderer != this)
            {
                if (_symbol is ISymbolCollection)
                {
                    ((ISymbolCollection)_symbol).AddSymbol(
                        ((SimpleRenderer)renderer).Symbol);
                }
                else
                {
                    ISymbolCollection symCol = PlugInManager.Create(new Guid("062AD1EA-A93C-4c3c-8690-830E65DC6D91")) as ISymbolCollection;
                    symCol.AddSymbol(_symbol);
                    symCol.AddSymbol(((SimpleRenderer)renderer).Symbol);
                    _symbol = (ISymbol)symCol;
                }

                return(true);
            }

            return(false);
        }
Пример #10
0
        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...");
        }