【ArcGIS Pro二次开发】(43):线闭合

当我们需要将多段线【polyline】转为面【polygon】的时候,必须保证线是闭合的,不然是无法生成面的,如下图:

0ed4cab044024c42b9e2bc2ae3251c2c.png

如果cad线段,可以在属性里将闭合选项设置为是,实现线的闭合:

b15bfcdfc9084f629a08bd78bb08b9fe.png

但如果是在ArcGIS Pro里处理,则没有方便的方法(或许有但我没找到),于是便做了这个工具。


一、要实现的功能

ec3785a902c847d89d490ad6c0ec9e97.png

如上图所示,选择一个线要素【需注意必须是数据库文件,不能是cad文件】,右键点击,在弹出的菜单中点击【线闭合】按钮即可。

执行结果如下:

bddec3661dc24c898d2051beaa64beef.png

可以看到,3个未封闭的线已经闭合了,后续可以用【要素转面】工具将其转为面。


二、实现流程

涉及要素编辑,就按流程建立编辑操作,并打开要素图层,逐行遍历,获取要素,这些都是常规操作。

            // 获取要素图层的编辑操作
            var editOperation = new EditOperation();
            using (RowCursor rowCursor = featureLayer.Search())
            {
                while (rowCursor.MoveNext())
                {
                    using (Feature feature = rowCursor.Current as Feature)      // 获取要素
                    {
                        // TODO…………
                    }
                }
            }
            // 执行编辑
            editOperation.Execute();

重点是上面【TODO】里的内容。

首先要判断线要素是否闭合,已闭合的就不再处理,只处理没闭合的。

这里通过提取线的首末点,如果首末点的坐标一致,则说明是闭合的,否则就是不闭合。

// 获取要素的几何对象
Polyline polyline = feature.GetShape() as Polyline;
// 获取线要素的起点和终点
MapPoint start_point = polyline.Points.First();
MapPoint end_point = polyline.Points.Last();
// 如果起始点和终止点的坐标不同,即线不闭合,则进行线闭合操作
if (!start_point.Coordinate2D.Equals(end_point.Coordinate2D))
{
  // TODO
}

找出未闭合的线后,将它的点集合提取出来,将第一个点复制到点集合的末尾,这样点集合就形成一个闭环,然后重新创建要素即可。

List<Coordinate2D> pts = new List<Coordinate2D>();
// 将第一个部分闭合
foreach (var part in polyline.Points)
{
    pts.Add(part.Coordinate2D);
}
pts.Add(start_point.Coordinate2D);
// 创建 PolylineBuilder 对象并闭合线要素
var builder = new PolylineBuilder(pts);
// 获取闭合后的几何
var closedGeometry = builder.ToGeometry();
// 设置要素的几何
feature.SetShape(closedGeometry);

以上便实现了此工具的功能。


三、工程文件分享

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

CloseLinehttps://pan.baidu.com/s/1x-EI_vNKgt4M9wZ8y9FEDg?pwd=iqp2

PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ArcGIS Pro二次开发是指使用ArcGIS Pro软件进行自定义功能开发的过程。对于初学者而言,开始二次开发可能感到无从入手,因为文资料较少,官方文档对于英文不熟悉的人来说可能不太友好。 要开始ArcGIS Pro二次开发,你可以按照以下步骤进行操作: 1. 首先,以管理员身份运行Visual Studio 2019。如果没有安装Visual Studio 2019,你需要先下载并安装它。 2. 在Visual Studio,右键项目名称,选择"添加",然后选择"新建项"。 3. 在"新建项"下拉菜单,选择"ArcGIS",然后选择"ArcGIS Pro Add-ins",再选择"ArcGIS Pro按钮",最后点击"添加"。 4. 接下来,配置新项目。在Visual Studio,点击"文件",选择"新建",然后选择"项目"。 5. 在"新建项目"对话框,选择"C#"作为语言,选择"Windows"作为平台,然后选择"ArcGIS Pro SDK"。在项目类型选择"ArcGIS Pro模块加载项",然后点击"下一步"。 6. 设置新项目的配置,然后点击"创建"。等待项目创建完成。 通过以上步骤,你就可以开始进行ArcGIS Pro二次开发了。你可以根据你的需求,使用C#编程语言进行开发,并且利用ArcGIS Pro SDK提供的功能来扩展ArcGIS Pro软件的功能。 希望这些步骤能够帮助你入门ArcGIS Pro二次开发。如果你遇到了其他问题或需要更多详细的指导,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【ArcGIS Pro二次开发】系列学习笔记,持续更新,记得收藏](https://blog.csdn.net/xcc34452366/article/details/129223703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ArcGIS Pro二次开发环境配置及项目创建示例](https://blog.csdn.net/wsywsy00/article/details/128550006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值