ArcGIS Pro二次开发-点层符号化

public static void ApplySymbol(string symbolChoice)
        {
            QueuedTask.Run(() =>
            {
                // Check for an active 2D mapview, if not, then prompt and exit.
                if (MapView.Active == null || (MapView.Active.ViewingMode != ArcGIS.Core.CIM.MapViewingMode.Map))
                {
                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("An active 2D MapView is required to use this tool. Exiting...", "Info");
                    return;
                }
                // Get the layer(s) selected in the Contents pane, if there is not just one, then prompt then exit.
                if (MapView.Active.GetSelectedLayers().Count != 1)
                {
                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("One feature layer must be selected in the Contents pane. Exiting...", "Info");
                    return;
                }
                // Check to see if the selected layer is a feature layer, if not, then prompt and exit.
                var featLayer = MapView.Active.GetSelectedLayers().First() as FeatureLayer;
                if (featLayer == null)
                {
                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("A feature layer must be selected in the Contents pane. Exiting...", "Info");
                    return;
                }
                // Check if the feature layer shape type is point, if not, then prompt and exit.
                else if (featLayer.ShapeType != esriGeometryType.esriGeometryPoint)
                {
                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Selected feature layer must be shape type POINT. Exiting...", "Info");
                    return;
                }
                try
                {
                    // If symbolChoice is a single symbol
                    if (symbolChoice == "single symbol")
                    {
                        // Get all styles in the project
                        var styles = Project.Current.GetItems<StyleProjectItem>();

                        // Get a specific style in the project
                        StyleProjectItem style = styles.First(s => s.Name == "ArcGIS 2D");

                        // Get the Push Pin 1 symbol
                        var pt_ssi = style.SearchSymbols(StyleItemType.PointSymbol, "圆形 3").FirstOrDefault();

                        // Create a new renderer definition and reference the symbol
                        SimpleRendererDefinition srDef = new SimpleRendererDefinition();
                        srDef.SymbolTemplate = pt_ssi.Symbol.MakeSymbolReference();

                        // Create the renderer and apply the definition
                        CIMSimpleRenderer ssRenderer = (CIMSimpleRenderer)featLayer.CreateRenderer(srDef);

                        // Update the feature layer renderer
                        featLayer.SetRenderer(ssRenderer);
                    }
                    else if (symbolChoice == "graduated color")
                    {
                        // Get a style and color ramp to apply to the renderer
                                               
                        StyleProjectItem style = Project.Current.GetItems<StyleProjectItem>().First(s => s.Name == "ColorBrewer 方案(RGB)");
                        IList<ColorRampStyleItem> colorRampList = style.SearchColorRamps("红色(4 类)");
                        ColorRampStyleItem aColorRamp = colorRampList[0];

                        // Create a graduated color renderer definition with 3 breaks, a populated numeric field named "Symbol" is required
                        GraduatedColorsRendererDefinition gcDef = new GraduatedColorsRendererDefinition()
                        {
                            ClassificationField = "ID",
                            ClassificationMethod = ArcGIS.Core.CIM.ClassificationMethod.EqualInterval,
                            BreakCount = 4,
                            ColorRamp = aColorRamp.ColorRamp,
                            SymbolTemplate = SymbolFactory.Instance.ConstructPointSymbol().MakeSymbolReference(),
                        };

                        // Create the renderer and apply the definition
                        CIMClassBreaksRenderer cbRndr = (CIMClassBreaksRenderer)featLayer.CreateRenderer(gcDef);

                        // Update the feature layer renderer
                        featLayer.SetRenderer(cbRndr);
                    }
                }
                catch (Exception exc)
                {
                    // Catch any exception found and display in a message box
                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Exception caught: " + exc.Message);
                    return;
                }
            });
        }

        Notification notification = new Notification();
        protected override void OnClick()
        {

            ApplySymbol("graduated color");
}}