• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gisoracle

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

 

posted on 2020-03-14 12:37  gisai  阅读(636)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3