/// <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)); }); }
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); } }); }
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 }); }