zoukankan      html  css  js  c++  java
  • 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");
    }}
  • 相关阅读:
    android点滴 之 进度条
    android点滴(26)之让线程拥有自己的消息循环
    Python property
    MD5加密
    哈希表加载xml文件
    .NET自定义控件制作
    如何用Treeview树加载xml
    xml的属性
    FFT实现——有趣的移位寄存流水线形式
    频率选择滤波器 线性时不变系统
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12491550.html
Copyright © 2011-2022 走看看