泰安哪里做网站,seo上排名,网络优化工程师是做什么的,做产品的淘宝客网站这个一个简单的小功能。
有些面要素可能会存在空洞#xff0c;这个工具的目的就是获取面要素的空洞#xff0c;或者去除空洞获取要素的边界。
这个功能其实在之前做拓扑功能的时候就已经有了#xff0c;这次只是单独把它提取出来。因为有时候会单独用到这个功能。 一、要实…这个一个简单的小功能。
有些面要素可能会存在空洞这个工具的目的就是获取面要素的空洞或者去除空洞获取要素的边界。
这个功能其实在之前做拓扑功能的时候就已经有了这次只是单独把它提取出来。因为有时候会单独用到这个功能。 一、要实现的功能 如上图所示在待处理的要素上右键单击在弹出的右键列表中点击【CC工具箱——处理要素空洞】按钮即可。 在弹出的工具框中分别输入参数
1、获取空洞及获取要素边界。可多选
根据所选的处理模式空洞和边界要素 二、实现流程
工具其实就是调用了几个arcpy工具组合一下即可。
这是主方法
// 获取面空洞【输出模式空洞 | 外边界】
public static void GetCave(string in_featureClass, string out_featureClass, string model 空洞)
{// 获取默认数据库var gdb Project.Current.DefaultGeodatabasePath;// 融合要素Arcpy.Dissolve(in_featureClass, gdb \dissolve_fc);// 面转线Arcpy.PolygonToLine(gdb \dissolve_fc, gdb \dissolve_line);// 要素转面Arcpy.FeatureToPolygon(gdb \dissolve_line, gdb \dissolve_polygon);// 再融合获取边界Arcpy.Dissolve(gdb \dissolve_polygon, gdb \dissolve_fin);// 擦除获取空洞Arcpy.Erase(gdb \dissolve_fin, gdb \dissolve_fc, gdb \single_fc);// 单部件转多部件输出if (model 空洞){Arcpy.MultipartToSinglepart(gdb \single_fc, out_featureClass);}else if (model 外边界){Arcpy.MultipartToSinglepart(gdb \dissolve_fin, out_featureClass);}// 删除中间要素Liststring list_fc new Liststring() { dissolve_fc, dissolve_line, dissolve_polygon, dissolve_fin, single_fc };foreach (var fc in list_fc){Arcpy.Delect(gdb \ fc);}
}
调用一下即可
// 获取默认数据库
var gdb Project.Current.DefaultGeodatabasePath;
string output_extent gdb \处理结果_边界;
string output_cave gdb \处理结果_空洞;
// 获取输出模式
bool extent (bool)check_getExtent.IsChecked;
bool cave (bool)check_getCave.IsChecked;await QueuedTask.Run(()
{if (extent) // 获取边界{ToolManager.GetCave(ly.Name, output_extent, 外边界);ToolManager.AddFeatureLayerToMap(output_extent);}if (cave) // 获取空洞{ToolManager.GetCave(ly.Name, output_cave);ToolManager.AddFeatureLayerToMap(output_cave);}
}); 三、工具文件分享
我把工具都集合成工具箱不再单独放单个工具可以到这里下载完整工具箱会不断更新
【ArcGIS Pro二次开发】CC工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。