public async Task ApplyColorRampAsync(FeatureLayer featureLayer, string[] fields) { StyleProjectItem style = Project.Current.GetItems <StyleProjectItem>().FirstOrDefault(s => s.Name == "ColorBrewer Schemes (RGB)"); if (style == null) { return; } var colorRampList = await QueuedTask.Run(() => style.SearchColorRamps("Red-Gray (10 Classes)")); if (colorRampList == null || colorRampList.Count == 0) { return; } CIMColorRamp cimColorRamp = null; CIMRenderer renderer = null; await QueuedTask.Run(() => { cimColorRamp = colorRampList[0].ColorRamp; var rendererDef = new UniqueValueRendererDefinition(fields, null, cimColorRamp); renderer = featureLayer?.CreateRenderer(rendererDef); featureLayer?.SetRenderer(renderer); }); }
/// <summary> /// Renders a feature layer using unique values from one or multiple fields /// </summary> /// <remarks> /// ![Unique Value renderer](http://Esri.github.io/arcgis-pro-sdk/images/Renderers/unique-value.png) /// </remarks> /// <returns> /// ![Unique Value renderer](http://Esri.github.io/arcgis-pro-sdk/images/Renderers/unique-value.png) /// </returns> internal static Task UniqueValueRendererAsync() { //Check feature layer name //Code works with the USDemographics feature layer available with the ArcGIS Pro SDK Sample data var featureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(f => f.Name == "USDemographics"); if (featureLayer == null) { MessageBox.Show("This renderer works with the USDemographics feature layer available with the ArcGIS Pro SDK Sample data", "Data missing"); return(Task.FromResult(0)); } return(QueuedTask.Run(() => { //construct unique value renderer definition UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition() { ValueFields = new List <string> { SDKHelpers.GetDisplayField(featureLayer) }, //multiple fields in the array if needed. ColorRamp = SDKHelpers.GetColorRamp(), //Specify color ramp }; //Creates a "Renderer" var cimRenderer = featureLayer.CreateRenderer(uvr); //Sets the renderer to the feature layer featureLayer.SetRenderer(cimRenderer); })); }
private CIMRenderer CreateniqueValueRendererForUSStatesUsingDefinition(FeatureLayer featureLayer) { //All of these methods have to be called on the MCT if (Module1.OnUIThread) { throw new CalledOnWrongThreadException(); } // color ramp CIMICCColorSpace colorSpace = new CIMICCColorSpace() { URL = "Default RGB" }; CIMContinuousColorRamp continuousColorRamp = new CIMLinearContinuousColorRamp(); continuousColorRamp.FromColor = CIMColor.CreateRGBColor(255, 255, 100); // yellow continuousColorRamp.ToColor = CIMColor.CreateRGBColor(255, 0, 0); // red continuousColorRamp.ColorSpace = colorSpace; 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 uvRendererDef = new UniqueValueRendererDefinition() { ColorRamp = continuousColorRamp, // randomHSVColorRamp, UseDefaultSymbol = true, ValueFields = new List <string> { "TOTPOP2010" } }; //Configure the Renderer using the layer and the contents of the STATENAM //field return(featureLayer.CreateRenderer(uvRendererDef)); }
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 pointSymbols = await style.SearchSymbolsAsync(StyleItemType.PointSymbol, "Tree"); var treeSymbolItem = pointSymbols.FirstOrDefault(); if (treeSymbolItem == null) { return; } var colorRamps = await style.SearchColorRampsAsync("UniqueValues"); var colorRampItem = colorRamps.FirstOrDefault(); if (colorRampItem == null) { return; } var layer = MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault(l => l.Name == "Trees") as FeatureLayer; Task t = QueuedTask.Run(() => { var symbol = treeSymbolItem.Symbol; symbol.SetSize(12.0); var renderer = new UniqueValueRendererDefinition() { UseDefaultSymbol = false, ValueFields = new string[] { "type" }, SymbolTemplate = symbol.MakeSymbolReference(), ColorRamp = colorRampItem.ColorRamp }; //Update the feature layer renderer layer.SetRenderer(layer.CreateRenderer(renderer)); }); }
/// <summary> /// Renders a feature layer using unique values from one or multiple fields /// </summary> /// <remarks> /// ![Unique Value renderer](http://Esri.github.io/arcgis-pro-sdk/images/Renderers/unique-value.png) /// </remarks> /// <param name="featureLayer"></param> /// <returns> /// ![Unique Value renderer](http://Esri.github.io/arcgis-pro-sdk/images/Renderers/unique-value.png) /// </returns> internal static Task UniqueValueRendererAsync(FeatureLayer featureLayer) { return(QueuedTask.Run(() => { //construct unique value renderer definition UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition() { ValueFields = new string[] { SDKHelpers.GetDisplayField(featureLayer) }, //multiple fields in the array if needed. ColorRamp = SDKHelpers.GetColorRamp(), //Specify color ramp }; //Creates a "Renderer" var cimRenderer = featureLayer.CreateRenderer(uvr); //Sets the renderer to the feature layer featureLayer.SetRenderer(cimRenderer); })); }
private CIMRenderer CreateniqueValueRendererForUSHighwaysUsingDefinition(FeatureLayer featureLayer) { //All of these methods have to be called on the MCT if (Module1.OnUIThread) throw new CalledOnWrongThreadException(); // color ramp CIMICCColorSpace colorSpace = new CIMICCColorSpace() { URL = "Default RGB" }; CIMContinuousColorRamp continuousColorRamp = new CIMLinearContinuousColorRamp(); continuousColorRamp.FromColor = CIMColor.CreateRGBColor(0, 0, 255); // yellow continuousColorRamp.ToColor = CIMColor.CreateRGBColor(255, 0, 0); // red continuousColorRamp.ColorSpace = colorSpace; 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 uvRendererDef = new UniqueValueRendererDefinition() { ColorRamp = continuousColorRamp, //randomHSVColorRamp, UseDefaultSymbol = true, ValueFields = new string[] {"ROUTE_NUM"} }; //Configure the Renderer using the featureLayer and the contents of the STATENAM //field return featureLayer.CreateRenderer(uvRendererDef); }
private void ExecuteRenderingClick() { // コンボ ボックスでレイヤー、フィールド、レンダリング手法が選択されているかをチェックする if (_selectedRenderingLayer is null) { MessageBox.Show("レイヤーを選択してください。"); } else if (_selectedField is null) { MessageBox.Show("フィールドを選択してください。"); } else if (_selectedRenderingMethod is null) { MessageBox.Show("レンダリング手法を選択してください。"); } else { try { // レンダラー作成の処理を実装 QueuedTask.Run(() => { // レイヤー名で検索してマップ上のレイヤーを取得する var lyr = MapView.Active.Map.FindLayers(_selectedRenderingLayer.Name).FirstOrDefault() as FeatureLayer; // 「ArcGIS カラー」(ArcGIS Pro の表示言語が英語の場合は、「ArcGIS Colors」を指定)プロジェクト スタイル アイテムを取得 StyleProjectItem style = Project.Current.GetItems <StyleProjectItem>().FirstOrDefault(s => s.Name == "ArcGIS カラー"); // 名前で検索してカラーランプ アイテムを取得する(ArcGIS Pro の表示言語が英語の場合は、「Spectrum - Full Light」を指定) IList <ColorRampStyleItem> colorRampList = style.SearchColorRamps("フル スペクトル (明るい)"); if (_selectedRenderingMethod == "個別値レンダリング") { // 個別値レンダラーの定義を作成する UniqueValueRendererDefinition uvrDef = new UniqueValueRendererDefinition() { ValueFields = new String[] { _selectedField }, // 分類に使用するフィールド ColorRamp = colorRampList[0].ColorRamp, // カラーランプ }; // 個別値レンダラーを作成する CIMUniqueValueRenderer cimRenderer = (CIMUniqueValueRenderer)lyr.CreateRenderer(uvrDef); // レンダラーをレイヤーに設定する lyr.SetRenderer(cimRenderer); } else // 等級色レンダリングの場合 { if (GetNumericField(lyr, _selectedField)) // 数値型のフィールドを選択している場合のみ実行する { // 等級色レンダラーの定義を作成する GraduatedColorsRendererDefinition gcDef = new GraduatedColorsRendererDefinition() { ClassificationField = _selectedField, // 分類に使用するフィールド ColorRamp = colorRampList[0].ColorRamp, // カラーランプ ClassificationMethod = ClassificationMethod.NaturalBreaks, // 分類方法(自然分類) BreakCount = 5, // 分類数(5段階で分類) }; // 等級色(クラス分類)レンダラーを作成する CIMClassBreaksRenderer cimClassBreakRenderer = (CIMClassBreaksRenderer)lyr.CreateRenderer(gcDef); // レンダラーをレイヤーに設定する lyr.SetRenderer(cimClassBreakRenderer); } } }); } catch (Exception) { MessageBox.Show("レンダリングに失敗しました。"); } } }
internal async void UpdateCluster(bool isTolerance) { if (MapView.Active == null) { return; } // Get Layer Name string inputFC = SelectedLayer.Name; int minPoints = 2; bool parsed = Int32.TryParse(MinPoints, out minPoints); /// Set PYT path -This could be inserted as a resource file // string tool_path = "C:\\Dev_summit\\2018\\InteractiveAnalytics\\pyt\\UpdateCluster.pyt\\UpdateClusterTool"; IReadOnlyList <string> args = null; if (isTolerance) { /// Arguments for executing process using Tolerance args = Geoprocessing.MakeValueArray(inputFC, minPoints, ValueSlider, -1); } else { /// Arguments for executing process using Threshold args = Geoprocessing.MakeValueArray(inputFC, minPoints, -1, ValueThreshold); } Task <IGPResult> task; /// Execute the Tool in the python toolbox task = Geoprocessing.ExecuteToolAsync(tool_path, args, flags: GPExecuteToolFlags.AddToHistory); StyleProjectItem style; CIMPointSymbol pointSymbol = null; /// Get Pro Styles style = await QueuedTask.Run <StyleProjectItem>(() => Project.Current.GetItems <StyleProjectItem>().First(s => s.Name == "ArcGIS 2D")); await QueuedTask.Run(() => { /// Search for a specific Symbol /// Other styles Arcgis/Resouces/Styles/Styles.stylx SQLite DB SymbolStyleItem symbolStyleItem = (SymbolStyleItem)style.LookupItem(StyleItemType.PointSymbol, "Circle 1_Shapes_3"); pointSymbol = (CIMPointSymbol)symbolStyleItem.Symbol; /// Cluster Ids based in Color Schema int[] ids = new int[] { -1, 1, 2, 3, 4, 5, 6, 7, 8 }; /// Set Colors string[] colors = new string[] { "156,156,156", "166,206,227", "31,120,180", "178,223,138", "51,160,44", "251,154,153", "227,26,28", "253,191,111", "255,127,0" }; /// Color Field String[] fields = new string[] { "COLOR_ID" }; /// Make a reference of the point symbol CIMSymbolReference symbolPointTemplate = pointSymbol.MakeSymbolReference(); /// Get definition of type symbology unique values UniqueValueRendererDefinition uniqueValueRendererDef = new UniqueValueRendererDefinition(fields, symbolPointTemplate, null, symbolPointTemplate, false); /// Get Current renderer of the Selected Layer CIMUniqueValueRenderer renderer = (CIMUniqueValueRenderer)SelectedLayer.CreateRenderer(uniqueValueRendererDef); CIMUniqueValueClass[] newClasses = new CIMUniqueValueClass[colors.Count()]; /// Get Point Symbol as string for creating other point colors string point = pointSymbol.ToXml(); /// Create Each Color for (int i = 0; i < ids.Length; i++) { CIMPointSymbol npoint = CIMPointSymbol.FromXml(point); if (ids[i] == -1) { npoint.SetSize(4); } else { npoint.SetSize(6); } CIMSymbolReference symbolPointTemplatei = npoint.MakeSymbolReference(); newClasses[i] = new CIMUniqueValueClass(); newClasses[i].Values = new CIMUniqueValue[1]; newClasses[i].Values[0] = new CIMUniqueValue(); newClasses[i].Values[0].FieldValues = new string[1]; newClasses[i].Values[0].FieldValues[0] = ids[i].ToString(); newClasses[i].Label = ids[i].ToString(); newClasses[i].Symbol = symbolPointTemplatei; var color = colors[i].Split(','); double r = Convert.ToDouble(color[0]); double g = Convert.ToDouble(color[1]); double b = Convert.ToDouble(color[2]); newClasses[i].Symbol.Symbol.SetColor(CIMColor.CreateRGBColor(r, g, b)); } /// Add Colors into the renderer renderer.Groups[0].Classes = newClasses; /// Apply new renderer in the layer SelectedLayer.SetRenderer(renderer); //SelectedLayer.RecalculateRenderer(); }); }
public void btnChangeRoomSymbology(object sender, EventArgs e) { var polygonSymbology = ((RadioButton)sender).Tag; QueuedTask.Run(() => { //Get the active map's definition - CIMMap. if (polygonSymbology.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.esriGeometryPolygon); CIMSimpleRenderer renderer = lyr.GetRenderer() as CIMSimpleRenderer; CIMStroke outline = SymbolFactory.Instance.ConstructStroke( ColorFactory.Instance.GreyRGB, 0.5, SimpleLineStyle.Solid); CIMPolygonSymbol fillWithOutline = SymbolFactory.Instance.ConstructPolygonSymbol( ColorFactory.Instance.CreateRGBColor(255, 255, 255), SimpleFillStyle.Solid, outline); //Update the symbol of the current simple renderer renderer.Symbol = fillWithOutline.MakeSymbolReference(); //Update the feature layer renderer lyr.SetRenderer(renderer); } if (polygonSymbology.ToString() == "Multicolor1") { Debug.WriteLine("Multicolor1"); 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.esriGeometryPolygon); 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[] { "RMAREA" }, //multiple fields in the array if needed. ColorRamp = randomHSVColorRamp //Specify color ramp }; var r = lyr.CreateRenderer(uvr); lyr.SetRenderer(r); } if (polygonSymbology.ToString() == "Beige") { 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.esriGeometryPolygon); //CIMSimpleRenderer renderer = lyr.GetRenderer() as CIMSimpleRenderer; CIMSimpleRenderer renderer = new CIMSimpleRenderer() { }; CIMStroke outline = SymbolFactory.Instance.ConstructStroke( ColorFactory.Instance.GreyRGB, 0.5, SimpleLineStyle.Solid); CIMPolygonSymbol fillWithOutline = SymbolFactory.Instance.ConstructPolygonSymbol( ColorFactory.Instance.CreateRGBColor(255, 222, 173), SimpleFillStyle.Solid, outline); //Update the symbol of the current simple renderer renderer.Symbol = fillWithOutline.MakeSymbolReference(); //Update the feature layer renderer lyr.SetRenderer(renderer); /* * * unique value rendere * internal static Task UniqueValueRenderer(FeatureLayer featureLayer) * { * return QueuedTask.Run(() => * { * //construct unique value renderer definition * UniqueValueRendererDefinition uvr = new * UniqueValueRendererDefinition() * { * ValueFields = new string[] { SDKHelpers.GetDisplayField(featureLayer) }, //multiple fields in the array if needed. * ColorRamp = SDKHelpers.GetColorRamp(), //Specify color ramp * }; * * //Creates a "Renderer" * var cimRenderer = featureLayer.CreateRenderer(uvr); * * //Sets the renderer to the feature layer * featureLayer.SetRenderer(cimRenderer); * }); * * } * * * diagonal cross hatch example * public static Task<CIMPolygonSymbol> CreateDiagonalCrossPolygonAsync() * { * return QueuedTask.Run<CIMPolygonSymbol>(() => * { * var trans = 50.0;//semi transparent * CIMStroke outline = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(0, 0, 0, trans), 2.0, SimpleLineStyle.Solid); * * //Stroke for the fill * var solid = SymbolFactory.Instance.ConstructStroke(CIMColor.CreateRGBColor(255, 0, 0, trans), 1.0, SimpleLineStyle.Solid); * * //Mimic cross hatch * CIMFill[] diagonalCross = * { * new CIMHatchFill() { * Enable = true, * Rotation = 45.0, * Separation = 5.0, * LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } * }, * new CIMHatchFill() { * Enable = true, * Rotation = -45.0, * Separation = 5.0, * LineSymbol = new CIMLineSymbol() { SymbolLayers = new CIMSymbolLayer[1] { solid } } * } * }; * List<CIMSymbolLayer> symbolLayers = new List<CIMSymbolLayer>(); * symbolLayers.Add(outline); * foreach (var fill in diagonalCross) * symbolLayers.Add(fill); * return new CIMPolygonSymbol() { SymbolLayers = symbolLayers.ToArray() }; * }); * } */ } }); Debug.WriteLine(MapView.Active.Map.Layers[0].Name); // .SetLabelVisibility(true); Debug.WriteLine(MapView.Active.Map.Layers[1].Name); // .SetLabelVisibility(true); //Debug.WriteLine(MapView.Active.Map.SetLabelEngine }
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 }); }