ArcGIS Pro SDK (七)编辑 10 捕捉

ArcGIS Pro SDK (七)编辑 10 捕捉

文章目录

  • ArcGIS Pro SDK (七)编辑 10 捕捉
    • 1 配置捕捉 - 打开或关闭捕捉
    • 2 配置捕捉 - 应用程序捕捉模式
    • 3 配置捕捉 - 图层捕捉可捕捉性
    • 4 配置捕捉 - 图层捕捉模式
    • 5 配置捕捉 - 组合示例
    • 6 捕捉选项

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 配置捕捉 - 打开或关闭捕捉

// 启用捕捉
ArcGIS.Desktop.Mapping.Snapping.IsEnabled = true;

// 禁用捕捉
ArcGIS.Desktop.Mapping.Snapping.IsEnabled = false;

2 配置捕捉 - 应用程序捕捉模式

// 仅设置点和边捕捉模式,清除其他所有模式
// 在 2.x 版本中 - ArcGIS.Desktop.Mapping.Snapping.SetSnapModes(SnapMode.Point, SnapMode.Edge);
ArcGIS.Desktop.Mapping.Snapping.SetSnapModes(
  new List<SnapMode>() { SnapMode.Point, SnapMode.Edge });

// 清除所有捕捉模式
// 在 2.x 版本中 - ArcGIS.Desktop.Mapping.Snapping.SetSnapModes();
ArcGIS.Desktop.Mapping.Snapping.SetSnapModes(null);

// 一次设置一个捕捉模式
ArcGIS.Desktop.Mapping.Snapping.SetSnapMode(SnapMode.Edge, true);
ArcGIS.Desktop.Mapping.Snapping.SetSnapMode(SnapMode.End, true);
ArcGIS.Desktop.Mapping.Snapping.SetSnapMode(SnapMode.Intersection, true);

// 获取当前捕捉模式
var snapModes = ArcGIS.Desktop.Mapping.Snapping.SnapModes;

// 获取特定捕捉模式的状态
bool isOn = ArcGIS.Desktop.Mapping.Snapping.GetSnapMode(SnapMode.Vertex);

3 配置捕捉 - 图层捕捉可捕捉性

// 图层是否可捕捉?
bool isSnappable = fLayer.IsSnappable;

// 设置特定图层的可捕捉性 - 需要在 MCT 上运行
await QueuedTask.Run(() =>
                     {
                         // 使用扩展方法
                         fLayer.SetSnappable(true);

                         // 或直接使用 CIM
                         //var layerDef = fLayer.GetDefinition() as ArcGIS.Core.CIM.CIMGeoFeatureLayerBase;
                         //layerDef.Snappable = true;
                         //fLayer.SetDefinition(layerDef);
                     });

// 关闭所有图层的可捕捉性
layerList = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
await QueuedTask.Run(() =>
                     {
                         foreach (var layer in layerList)
                         {
                             layer.SetSnappable(false);
                         }
                     });

4 配置捕捉 - 图层捕捉模式

layerList = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();

// 按图层配置
foreach (var layer in layerList)
{
    // 查找图层捕捉模式的状态
    var lsm = ArcGIS.Desktop.Mapping.Snapping.GetLayerSnapModes(layer);
    bool vertexOn = lsm.Vertex;
    // 或使用
    vertexOn = lsm.GetSnapMode(SnapMode.Vertex);

    bool edgeOn = lsm.Edge;
    // 或使用
    edgeOn = lsm.GetSnapMode(SnapMode.Edge);

    bool endOn = lsm.End;
    // 或使用
    endOn = lsm.GetSnapMode(SnapMode.End);

    // 更新一些捕捉模式
    // 关闭顶点捕捉
    lsm.SetSnapMode(SnapMode.Vertex, false);
    // 开启交点捕捉
    lsm.SetSnapMode(SnapMode.Intersection, true);

    // 并设置回图层
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, lsm);

    // 一次分配一个捕捉模式
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, SnapMode.Vertex, false);

    // 打开所有捕捉模式
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, true);
    // 关闭所有捕捉模式
    ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layer, false);
}

// 为一组图层配置

// 为一组图层设置顶点、边、结束捕捉,其他捕捉模式为 false
var vee = new LayerSnapModes(false);
vee.Vertex = true;
vee.Edge = true;
vee.End = true;
ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layerList, vee);

// 确保一组图层的交点捕捉开启而不更改其他任何捕捉模式

// 获取一组图层的捕捉模式
var dictLSM = ArcGIS.Desktop.Mapping.Snapping.GetLayerSnapModes(layerList);
foreach (var layer in dictLSM.Keys)
{
    var lsm = dictLSM[layer];
    lsm.Intersection = true;
}
ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(dictLSM);

// 为一组图层关闭所有捕捉模式
ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(layerList, false);

5 配置捕捉 - 组合示例

// 仅对特定感兴趣的图层的顶点进行捕捉,而不对其他图层的顶点进行捕捉
// 所有其他捕捉模式应关闭。

// 必须启用捕捉
ArcGIS.Desktop.Mapping.Snapping.IsEnabled = true;

// 关闭所有应用程序捕捉模式
// 在 2.x 版本中 - ArcGIS.Desktop.Mapping.Snapping.SetSnapModes();
ArcGIS.Desktop.Mapping.Snapping.SetSnapModes(null);

// 设置应用程序捕捉模式顶点开启
ArcGIS.Desktop.Mapping.Snapping.SetSnapMode(SnapMode.Vertex, true);

// 确保图层捕捉开启
await QueuedTask.Run(() =>
{
  fLayer.SetSnappable(true);
});

// 仅设置顶点捕捉
var vertexOnly = new LayerSnapModes(false);
vertexOnly.Vertex = true;

// 仅对特定图层设置顶点捕捉,清除其他所有捕捉模式
var dict = new Dictionary<Layer, LayerSnapModes>();
dict.Add(fLayer, vertexOnly);
ArcGIS.Desktop.Mapping.Snapping.SetLayerSnapModes(dict, true);  // true = 重置其他图层

6 捕捉选项

//通过 get/set 选项设置捕捉选项
var snapOptions = ArcGIS.Desktop.Mapping.Snapping.GetOptions(myMap);
// 在 2.x 版本中 - snapOptions.SnapToSketchEnabled = true;
snapOptions.IsSnapToSketchEnabled = true;
snapOptions.XYTolerance = 100;
// 在 2.x 版本中 - snapOptions.ZToleranceEnabled = true;
snapOptions.IsZToleranceEnabled = true;
snapOptions.ZTolerance = 0.6;

// 开启捕捉提示显示部分
snapOptions.SnapTipDisplayParts = (int)SnapTipDisplayPart.SnapTipDisplayLayer + (int)SnapTipDisplayPart.SnapTipDisplayType;

// 关闭所有捕捉提示
//snapOptions.SnapTipDisplayParts = (int)SnapTipDisplayPart.SnapTipDisplayNone;

// 仅开启图层显示
//snapOptions.SnapTipDisplayParts = (int)SnapTipDisplayPart.SnapTipDisplayLayer;

// 在 2.x 版本中 - snapOptions.GeometricFeedbackColor = ColorFactory.Instance.RedRGB;
snapOptions.SnapTipColor = ColorFactory.Instance.RedRGB;

ArcGIS.Desktop.Mapping.Snapping.SetOptions(myMap, snapOptions);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/766559.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享一款Type C接口USB转2路485模块【带完整原理图】

大家好&#xff0c;我是『芯知识学堂』的SingleYork&#xff0c;今天给大家分享一款很实用的工具–基于Type C接口的USB转2路485模块。 这款模块主芯片采用南京沁恒的CH342F这款芯片&#xff0c;芯片特性如下&#xff1a; 该系列芯片有QFN24和ESSOP10 这2种封装&#xff0c;…

深度网络现代实践 - 深度前馈网络之结构设计篇

序言 深度网络结构设计作为人工智能领域的基石&#xff0c;正引领着技术创新的浪潮。通过模拟人脑神经元间的复杂连接&#xff0c;深度神经网络展现了卓越的特征学习与模式识别能力。随着大数据与计算能力的提升&#xff0c;设计高效、精准且泛化能力强的深度网络结构成为研究…

深度探索“目录名称无效“:原因、解决方案与最佳实践

目录名称无效&#xff1a;现象背后的秘密 在日常使用电脑或移动设备时&#xff0c;我们时常会遇到“目录名称无效”的错误提示&#xff0c;这一提示仿佛是一道无形的屏障&#xff0c;阻断了我们与重要数据的联系。从本质上讲&#xff0c;“目录名称无效”意味着系统无法识别或…

基于正点原子FreeRTOS学习笔记——时间片调度实验

目录 一、时间片调度介绍 二、实验演示 1、宏修改 1.1、滴答定时器宏 1.2、调度器宏 2、实验程序 2.1.1、任务1&#xff0c;任务2不加临界区程序 2.1.2 实验现象 2.2.1、任务1&#xff0c;任务2加临界区程序 2.2.2 实验现象 一、时间片调度介绍 时间片&#xff1a;同…

Golang中defer和return顺序

在Golang中&#xff0c;defer 和 return 的执行顺序是一个重要的特性&#xff0c;它们的执行顺序如下&#xff1a; return语句不是一条单独的语句&#xff0c;实际上&#xff0c;它是由赋值和返回两部分组成的。赋值步骤会先执行&#xff0c;这一步会计算return语句中的表达式…

【后端面试题】【中间件】【NoSQL】MongoDB的配置服务器、复制机制、写入语义和面试准备

MongoDB的配置服务器 引入了分片机制之后&#xff0c;MongoDB启用了配置服务器(config server) 来存储元数据&#xff0c;这些元数据包括分片信息、权限控制信息&#xff0c;用来控制分布式锁。其中分片信息还会被负责执行查询mongos使用。 MongoDB的配置服务器有一个很大的优…

【C语言】const 关键字

在C语言中&#xff0c;const关键字用于定义常量&#xff0c;使得变量的值在其声明之后无法被修改。这可以帮助防止意外修改数据&#xff0c;提高代码的安全性和可读性。以下是有关const关键字的一些详细说明&#xff1a; 基本用法 const int max_value 100;在这个例子中&…

Zynq系列FPGA实现SDI视频编解码+图像缩放,基于GTX高速接口,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA图像缩放方案本方案的无缩放应用本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB纯V…

FastApi中的常见请求类型

FastApi中的常见请求类型 后端开发语言中&#xff0c;我钟情于node&#xff0c;高效的异步处理真是让我眼前一亮&#xff0c;同时&#xff0c;简单易懂的语法也让我非常倾心 但是但是&#xff0c;因为考虑要写一个深度学习算法的后端接口&#xff0c;所以不得不选用python作为…

容器安全:等保合规性的基石

随着云计算和微服务架构的蓬勃发展&#xff0c;容器技术已经成为现代IT基础设施不可或缺的一部分。在网络安全等级保护制度&#xff08;等保&#xff09;的框架下&#xff0c;容器安全的要求日益凸显&#xff0c;成为等保合规性的基石。本文将深入探讨容器安全在等保中的重要性…

nginx的配置文件

nginx.conf 1、全局模块 worker_processes 1; 工作进程数&#xff0c;设置成服务器内核数的2倍&#xff08;一般不超过8个&#xff0c;超过8个反正会降低性能&#xff0c;4个 1-2个 &#xff09; 处理进程的过程必然涉及配置文件和展示页面&#xff0c;也就是涉及打开文件的…

让围绕数据库构建大模型应用更简单方便--DB-GPT

DB-GPT的目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力&#xff0c;让围绕数据库构建大模型应用更简单&#xff0c;更方便。 1 处理流程 DB-GPT系…

问题集锦1

01.inner中使用JwtTokenUtil.getUserCode() 前端调用上传&#xff08;java&#xff09;&#xff0c;上传使用加购 Overridepublic Boolean insertShoppingCart(InsertShoppingCartParamsDto dto) {// 通过userCode,itemCode和supplierCode来判断当前加购人添加到购物车的商品是…

美术馆预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;展品信息管理&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;美术馆管理&#xff0c;基础数据管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;美术馆&#xff…

工业路由器与家用路由器的区别

在现代网络环境中&#xff0c;路由器扮演着至关重要的角色。无论是在家庭网络还是在工业网络&#xff0c;选择合适的路由器都至关重要。本文将从多个角度&#xff0c;对工业路由器与家用路由器进行详细比较&#xff0c;帮助您更好地理解二者的区别。 1、安全性 工业路由器&…

API接口测试/Swgger-ui未授权访问

目录 API接口 接口文档 接口测试的方法 单流程 多流程 Swgger-ui未授权访问 在之间的一次面试中面试官问到了API接口测试&#xff0c;我回答的不好&#xff0c;因为自己确实不太会&#xff0c;后面才下去学习了&#xff0c;这里复习和练习一下 API接口 API&#xff08;…

背景图的动效,非常的炫酷,非一般的感觉。

我们都知道在一些展示型项目中&#xff0c;背景图加上动效后&#xff0c;可以立马让整个设计档次提升了&#xff0c;这次带来了一批背景图的动效图&#xff0c;大家看一下。

震惊!张宇强化36讲1200页,暑期强化高效利用指南!

特别喜欢张宇老师的讲课风格 如果你打算跟张宇老师&#xff0c;那么基础——>强化——>冲刺&#xff0c;你应该这么买书&#xff01; 张宇老师25版课程大改版&#xff0c;其中&#xff0c;36讲的变动是最大的&#xff0c;张宇老师25版课程把以往的强化课程前移&#xff0…

基于多视点编码光场的全景三维重建方法

欢迎关注GZH《光场视觉》 摘要&#xff1a;在基于光场的一系列应用中&#xff0c;目标的三维重建是基础且关键的任务。普通光场只能重建单一视角而无法重建全景&#xff0c;并且在纹理特征匮乏的区域也无法生成准确的三维信息。针对以上问题&#xff0c;提出一种基于多视点编码…

视频字幕提取在线工具有哪些?总结5个字幕提取工具

平时在沉浸式追剧的时候&#xff0c;我们常常都会被影视剧中的各种金句爆梗而逗得开怀大笑~而真正要用到时候却总是一片头脑空白。其实要记住它们最好的办法便是将其提取留档下来&#xff0c;每次有需要的时候打开就能一下子回顾到~ 今天就来带大家盘一盘视频字幕提取的软件好…