コード例 #1
0
        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);
            });
        }
コード例 #2
0
        /// <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);
            }));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
            });
        }
コード例 #5
0
        /// <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);      
        }
コード例 #7
0
        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("レンダリングに失敗しました。");
                }
            }
        }
コード例 #8
0
        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();
            });
        }
コード例 #9
0
        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
        }
コード例 #10
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);
                }
            });
        }
コード例 #11
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
            });
        }