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"); }}
分类:
C#
, ArcGIS Pro二次开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理