【ArcGIS Pro二次开发】(37):图层一键应用村规、国空符号系统

您所在的位置:网站首页 arcgis图层文件可以移动吗 【ArcGIS Pro二次开发】(37):图层一键应用村规、国空符号系统

【ArcGIS Pro二次开发】(37):图层一键应用村规、国空符号系统

2023-06-12 01:08| 来源: 网络整理| 查看: 265

在国空、村规的实际工作中,将要素类加载到地图中后,需要将图斑的符号系统修改成国空或村规的样式。一般的做法是使用样式库或已经做好的图层文件进行匹配,这个工具要实现的功能是直接应用特定的符号系统,其实用的方法也就是GP工具的【应用图层的符号设置】,并没有多少代码,但好处在于有了这个工具,就不用保存预制好的符号库或图层文件了,在任何场景下都可以运用自如。

一、要实现的功能

如上图所示,右击要素图层,点击【应用符号系统】按钮,在弹出的工具框中,选择要应用的符号类别,工具已经预制了2种符号【国空用地(市级)】和【村规用地】。

实际上随着工作的需要,以后可以增加更多的符号类别。

这里以【村规用地】为例,在右边根据输入要素的字段选择用地名称字段,点击执行即可。

生成结果如下:

以【国空用地(市级)】为例,生成结果如下:

二、实现流程

上面说过,实现流程很简单,就是应用了GP工具的【应用图层的符号设置】,基本没有什么细节可说的,直接看代码吧。

不过首先,需要先准备相对应的图层文件:

然后在代码中复制图层文件,并应用到图层即可:

// 获取参数 string field = combox_field.Text; // 符号系统选择 string symbol = ""; if (rb_gk.IsChecked == true) { symbol = "gk"; } else if (rb_cg.IsChecked == true) { symbol = "cg"; } await QueuedTask.Run(() => { // 获取工程默认文件夹位置 var def_path = Project.Current.HomeFolderPath; // 获取当前地图 var map = MapView.Active.Map; // 获取图层 FeatureLayer ly = MapView.Active.GetSelectedLayers().FirstOrDefault() as FeatureLayer; // 如果选择的不是面要素或是无选择,则返回 if (ly.ShapeType != esriGeometryType.esriGeometryPolygon || ly == null) { MessageBox.Show("请选择一个面要素,否则不能执行!"); return; } if (symbol == "gk") { // 复制符号图层文件 ToolManager.CopyResourceFile(@"ApplySymbology.Data.Layers.国空用地.lyrx", def_path + @"\国空用地.lyrx"); // 应用符号系统 Arcpy.ApplySymbologyFromLayer(ly.Name, def_path + @"\国空用地.lyrx", "VALUE_FIELD 用地名称_统一 " + field); File.Delete(def_path + @"\国空用地.lyrx"); } else if (symbol == "cg") { // 复制符号图层文件 ToolManager.CopyResourceFile(@"ApplySymbology.Data.Layers.村规用地.lyrx", def_path + @"\村规用地.lyrx"); // 应用符号系统 Arcpy.ApplySymbologyFromLayer(ly.Name, def_path + @"\村规用地.lyrx", "VALUE_FIELD GHDLMC " + field); File.Delete(def_path + @"\村规用地.lyrx"); } }); 三、工程文件分享

 最后,放上工程文件的链接:

ApplySymbologyicon-default.png?t=N4P3https://pan.baidu.com/s/1HwMyhiSm0jHGTu8WatlVKw?pwd=m1d3PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3