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