Пример #1
0
 /// <summary>
 /// Create feature layer of a selected type (if it doesn't already exist)
 /// TODO: test this funciton
 /// </summary>
 /// <param name="layerType"></param>
 /// <returns></returns>
 private static FeatureLayer makeLayer(FeatureLayerType layerType)
 {
     try
     {
         var name   = layerType.ToString("g");
         var symRef = createSymbol(layerType);
         var rd     = new SimpleRendererDefinition(symRef, label: name, description: name);
         // TODO: create new dataconnection for Rhino with attributes as needed
         var dc = MapView.Active.Map.Layers.FirstOrDefault().GetDataConnection();
         return(LayerFactory.Instance.CreateFeatureLayer(dc, MapView.Active.Map, layerName: layerType.ToString("g"), rendererDefinition: rd));
     }
     catch
     {
         return(null);
     }
 }
        protected override async void OnClick()
        {
            //Get all styles in the project
            var styles = Project.Current.GetItems <StyleProjectItem>();

            //Get a specific style in the project
            StyleProjectItem style = styles.First(x => x.Name == "CustomStyle");
            var results            = await style.SearchSymbolsAsync(StyleItemType.PointSymbol, "Tree");

            var treeSymbolItem = results.FirstOrDefault();

            if (treeSymbolItem == null)
            {
                return;
            }

            var layer = MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault(l => l.Name == "Trees") as FeatureLayer;

            if (layer == null)
            {
                return;
            }

            Task t = QueuedTask.Run(() =>
            {
                var symbol          = treeSymbolItem.Symbol as CIMPointSymbol;
                symbol.SymbolLayers = new CIMSymbolLayer[] { symbol.SymbolLayers[0] };
                symbol.SetSize(12.0);
                symbol.SetColor(ColorFactory.CreateRGBColor(24, 69, 59));

                var renderer = new SimpleRendererDefinition(symbol.MakeSymbolReference());

                //Update the feature layer renderer
                layer.SetRenderer(layer.CreateRenderer(renderer));
            });
        }
Пример #3
0
        public void btnChangeLineSymbology(object sender, EventArgs e)
        {
            var lineSymbology = ((RadioButton)sender).Tag;

            QueuedTask.Run(() =>
            {
                //Get the active map's definition - CIMMap.

                if (lineSymbology.ToString() == "None")
                {
                    var cimMap = MapView.Active.Map.GetDefinition();
                    //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer;
                    var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolyline);
                    SimpleRendererDefinition renderer = new SimpleRendererDefinition()
                    {
                        SymbolTemplate = new CIMSymbolReference()
                        {
                            Symbol = SymbolFactory.Instance.ConstructLineSymbol(
                                ColorFactory.Instance.WhiteRGB, 0.5, SimpleLineStyle.Null)
                        }
                    };
                    var r = lyr.CreateRenderer(renderer);
                    lyr.SetRenderer(r);
                }
                if (lineSymbology.ToString() == "Gray")
                {
                    var cimMap = MapView.Active.Map.GetDefinition();
                    //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer;
                    var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolyline);
                    SimpleRendererDefinition renderer = new SimpleRendererDefinition()
                    {
                        SymbolTemplate = new CIMSymbolReference()
                        {
                            Symbol = SymbolFactory.Instance.ConstructLineSymbol(
                                ColorFactory.Instance.GreyRGB, 0.5, SimpleLineStyle.Solid)
                        }
                    };
                    var r = lyr.CreateRenderer(renderer);
                    lyr.SetRenderer(r);
                }
                if (lineSymbology.ToString() == "Multicolor")
                {
                    var cimMap = MapView.Active.Map.GetDefinition();
                    //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer;
                    var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolyline);

                    CIMUniqueValueRenderer renderer = lyr.GetRenderer() as CIMUniqueValueRenderer;

                    // color ramp
                    CIMICCColorSpace colorSpace = new CIMICCColorSpace()
                    {
                        URL = "Default RGB"
                    };

                    CIMRandomHSVColorRamp randomHSVColorRamp = new CIMRandomHSVColorRamp()
                    {
                        ColorSpace = colorSpace,
                        MinAlpha   = 100,
                        MaxAlpha   = 100,
                        MinH       = 0,
                        MaxH       = 360,
                        MinS       = 15,
                        MaxS       = 30,
                        MinV       = 99,
                        MaxV       = 100,
                        Seed       = 0,
                    };

                    UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition()
                    {
                        ValueFields = new string[] { "OBJECTID" }, //multiple fields in the array if needed.
                        ColorRamp   = randomHSVColorRamp           //Specify color ramp
                    };


                    CIMRenderer r = lyr.CreateRenderer(uvr);


                    var t = r.ToXml();
                    Debug.WriteLine(t);

                    lyr.SetRenderer(r);
                }
            });
        }
Пример #4
0
        public async void Example6()
        {
            Map map = MapView.Active.Map;
            await QueuedTask.Run(() =>
            {
                StreamLayer streamLayer = null;
                //https://geoeventsample1.esri.com:6443/arcgis/rest/services/AirportTraffics/StreamServer

                #region Defining a unique value renderer definition

                var uvrDef = new UniqueValueRendererDefinition()
                {
                    ValueFields    = new string[] { "ACTYPE" },
                    SymbolTemplate = SymbolFactory.Instance.ConstructPointSymbol(
                        ColorFactory.Instance.RedRGB, 10, SimpleMarkerStyle.Hexagon)
                                     .MakeSymbolReference(),
                    ValuesLimit = 5
                };
                //Note: CreateRenderer can only create value classes based on
                //the current events it has received
                streamLayer.SetRenderer(streamLayer.CreateRenderer(uvrDef));

                #endregion

                #region Setting a unique value renderer for latest observations

                //Define the classes by hand to avoid using CreateRenderer(...)
                CIMUniqueValueClass uvcB727 = new CIMUniqueValueClass()
                {
                    Values = new CIMUniqueValue[] { new CIMUniqueValue()
                                                    {
                                                        FieldValues = new string[] { "B727" }
                                                    } },
                    Visible = true,
                    Label   = "Boeing 727",
                    Symbol  = SymbolFactory.Instance.ConstructPointSymbol(CIMColor.CreateRGBColor(255, 0, 0), 8, SimpleMarkerStyle.Hexagon).MakeSymbolReference()
                };

                CIMUniqueValueClass uvcD9 = new CIMUniqueValueClass()
                {
                    Values = new CIMUniqueValue[] { new CIMUniqueValue()
                                                    {
                                                        FieldValues = new string[] { "DC9" }
                                                    } },
                    Visible = true,
                    Label   = "DC 9",
                    Symbol  = SymbolFactory.Instance.ConstructPointSymbol(CIMColor.CreateRGBColor(0, 255, 0), 8, SimpleMarkerStyle.Hexagon).MakeSymbolReference()
                };
                //Assign the classes to a group
                CIMUniqueValueGroup uvGrp = new CIMUniqueValueGroup()
                {
                    Classes = new CIMUniqueValueClass[] { uvcB727, uvcD9 }
                };
                //assign the group to the renderer
                var UVrndr = new CIMUniqueValueRenderer()
                {
                    Fields           = new string[] { "ACTYPE" },
                    Groups           = new CIMUniqueValueGroup[] { uvGrp },
                    UseDefaultSymbol = true,
                    DefaultLabel     = "Others",
                    DefaultSymbol    = SymbolFactory.Instance.ConstructPointSymbol(
                        CIMColor.CreateRGBColor(185, 185, 185), 8, SimpleMarkerStyle.Hexagon).MakeSymbolReference()
                };
                //set the renderer. Depending on the current events recieved, the
                //layer may or may not have events for each of the specified
                //unique value classes
                streamLayer.SetRenderer(UVrndr);

                #endregion

                #region Setting a unique value renderer for previous observations
                //The layer must be track aware and spatial
                if (streamLayer.TrackType != TrackType.Spatial)
                {
                    return;
                }
                //Must be on QueuedTask!
                //Define unique value classes same as we do for current observations
                //or use "CreateRenderer(...)" to assign them automatically
                CIMUniqueValueClass uvcB727Prev = new CIMUniqueValueClass()
                {
                    Values = new CIMUniqueValue[] { new CIMUniqueValue()
                                                    {
                                                        FieldValues = new string[] { "B727" }
                                                    } },
                    Visible = true,
                    Label   = "Boeing 727",
                    Symbol  = SymbolFactory.Instance.ConstructPointSymbol(
                        CIMColor.CreateRGBColor(255, 0, 0), 4, SimpleMarkerStyle.Hexagon)
                              .MakeSymbolReference()
                };

                CIMUniqueValueClass uvcD9Prev = new CIMUniqueValueClass()
                {
                    Values = new CIMUniqueValue[] { new CIMUniqueValue()
                                                    {
                                                        FieldValues = new string[] { "DC9" }
                                                    } },
                    Visible = true,
                    Label   = "DC 9",
                    Symbol  = SymbolFactory.Instance.ConstructPointSymbol(
                        CIMColor.CreateRGBColor(0, 255, 0), 4, SimpleMarkerStyle.Hexagon)
                              .MakeSymbolReference()
                };

                CIMUniqueValueGroup uvGrpPrev = new CIMUniqueValueGroup()
                {
                    Classes = new CIMUniqueValueClass[] { uvcB727Prev, uvcD9Prev }
                };

                var UVrndrPrev = new CIMUniqueValueRenderer()
                {
                    Fields           = new string[] { "ACTYPE" },
                    Groups           = new CIMUniqueValueGroup[] { uvGrpPrev },
                    UseDefaultSymbol = true,
                    DefaultLabel     = "Others",
                    DefaultSymbol    = SymbolFactory.Instance.ConstructPointSymbol(
                        CIMColor.CreateRGBColor(185, 185, 185), 4, SimpleMarkerStyle.Hexagon)
                                       .MakeSymbolReference()
                };

                #endregion

                #region Setting a simple renderer to draw track lines
                //The layer must be track aware and spatial
                if (streamLayer.TrackType != TrackType.Spatial)
                {
                    return;
                }
                //Must be on QueuedTask!
                //Note: only a simple renderer with solid line symbol is supported for track
                //line renderer
                var trackRenderer = new SimpleRendererDefinition()
                {
                    SymbolTemplate = SymbolFactory.Instance.ConstructLineSymbol(
                        ColorFactory.Instance.BlueRGB, 2, SimpleLineStyle.Solid)
                                     .MakeSymbolReference()
                };
                streamLayer.SetRenderer(
                    streamLayer.CreateRenderer(trackRenderer),
                    FeatureRendererTarget.TrackLines);

                #endregion

                #region Check Previous Observation and Track Line Visibility

                //The layer must be track aware and spatial for these settings
                //to have an effect
                if (streamLayer.TrackType != TrackType.Spatial)
                {
                    return;
                }
                //Must be on QueuedTask
                if (!streamLayer.AreTrackLinesVisible)
                {
                    streamLayer.SetTrackLinesVisibility(true);
                }
                if (!streamLayer.ArePreviousObservationsVisible)
                {
                    streamLayer.SetPreviousObservationsVisibility(true);
                }

                #endregion

                #region Make Track Lines and Previous Observations Visible
                //The layer must be track aware and spatial for these settings
                //to have an effect
                if (streamLayer.TrackType != TrackType.Spatial)
                {
                    return;
                }
                //Must be on QueuedTask
                //Note: Setting PreviousObservationsCount larger than the
                //"SetExpirationMaxCount()" has no effect
                streamLayer.SetPreviousObservationsCount(6);
                if (!streamLayer.AreTrackLinesVisible)
                {
                    streamLayer.SetTrackLinesVisibility(true);
                }
                if (!streamLayer.ArePreviousObservationsVisible)
                {
                    streamLayer.SetPreviousObservationsVisibility(true);
                }
                #endregion


                #region Retrieve the current observation renderer

                //Must be on QueuedTask!
                var renderer = streamLayer.GetRenderer();

                #endregion

                #region Retrieve the previous observation renderer
                //The layer must be track aware and spatial
                if (streamLayer.TrackType != TrackType.Spatial)
                {
                    return;
                }
                //Must be on QueuedTask!
                var prev_renderer = streamLayer.GetRenderer(
                    FeatureRendererTarget.PreviousObservations);

                #endregion

                #region Retrieve the track lines renderer
                //The layer must be track aware and spatial
                if (streamLayer.TrackType != TrackType.Spatial)
                {
                    return;
                }
                //Must be on QueuedTask!
                var track_renderer = streamLayer.GetRenderer(
                    FeatureRendererTarget.TrackLines);

                #endregion
            });
        }