ArcGIS Pro SDK (七)编辑 13 注解
ArcGIS Pro SDK (七)编辑 13 注解
文章目录
- ArcGIS Pro SDK (七)编辑 13 注解
- 1 注释构建工具
- 2 以编程方式启动编辑批注
- 3 更新批注文本
- 4 修改批注形状
- 5 修改批注文本图形
- 6 接地到网格
环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0
1 注释构建工具
// 在您的 config.daml 中设置 categoryRefID
// <tool id="..." categoryRefID="esri_editing_construction_annotation" caption="Create Anno" ...>// 在构造函数中选择 Sketch 类型 Point 或 Line 或 BezierLine...
internal class AnnoConstructionTool : MapTool
{public AnnoConstructionTool(){IsSketchTool = true;UseSnapping = true;SketchType = SketchGeometryType.Point;}protected async override Task<bool> OnSketchCompleteAsync(Geometry geometry){if (CurrentTemplate == null || geometry == null)return false;// 创建编辑操作var createOperation = new EditOperation();createOperation.Name = string.Format("Create {0}", CurrentTemplate.Layer.Name);createOperation.SelectNewFeatures = true;var insp = CurrentTemplate.Inspector;var result = await QueuedTask.Run(() =>{// 获取注释属性类AnnotationProperties annoProperties = insp.GetAnnotationProperties();// 设置自定义注释属性annoProperties.TextString = "自定义文本";annoProperties.Color = ColorFactory.Instance.RedRGB;annoProperties.FontSize = 24;annoProperties.FontName = "Arial";annoProperties.HorizontalAlignment = ArcGIS.Core.CIM.HorizontalAlignment.Right;annoProperties.Shape = geometry;// 将注释属性分配回检查器insp.SetAnnotationProperties(annoProperties);// 队列特征创建createOperation.Create(CurrentTemplate.Layer, insp);// 执行操作return createOperation.Execute();});return result;}
2 以编程方式启动编辑批注
var plugin = FrameworkApplication.GetPlugInWrapper("esri_editing_EditVerticesText");
if (plugin.Enabled)((ICommand)plugin).Execute(null);
3 更新批注文本
await QueuedTask.Run(() =>
{// annoLayer 是您的注释图层...// 使用检查器方法学// 在 2.x 版本中 - var insp = new Inspector(true);var insp = new Inspector();insp.Load(annoLayer, oid);// 获取注释属性AnnotationProperties annoProperties = insp.GetAnnotationProperties();// 设置属性annoProperties.TextString = "Hello World";// 将注释属性分配回检查器insp.SetAnnotationProperties(annoProperties);// 创建和执行编辑操作EditOperation op = new EditOperation();op.Name = "Update annotation";op.Modify(insp);op.Execute();
});
4 修改批注形状
await QueuedTask.Run(() =>{// 不要使用 'Shape'....Shape 是注释文本的边界框,这不是您想要的...// 在 2.x 版本中 - var insp = new Inspector(true);var insp = new Inspector();insp.Load(annoLayer, oid);AnnotationProperties annoProperties = insp.GetAnnotationProperties();var shape = annoProperties.Shape;if (shape.GeometryType != GeometryType.GeometryBag){var newGeometry = GeometryEngine.Instance.Move(shape, 10, 10);annoProperties.Shape = newGeometry;insp.SetAnnotationProperties(annoProperties);EditOperation op = new EditOperation();op.Name = "Change annotation angle";op.Modify(insp);op.Execute();}});
5 修改批注文本图形
await QueuedTask.Run(() =>{var selection = annoLayer.GetSelection();if (selection.GetCount() == 0)return;// 使用第一个选中的要素// 在 2.x 版本中 - var insp = new Inspector(true);var insp = new Inspector();insp.Load(annoLayer, selection.GetObjectIDs().FirstOrDefault());// 如果不是注释要素,则应返回 null 的 getAnnoPropertiesAnnotationProperties annoProperties = insp.GetAnnotationProperties();// 获取文本图形CIMTextGraphic textGraphic = annoProperties.TextGraphic;// 修改文本textGraphic.Text = "Hello world";// 通过符号设置 x、y 偏移量var symbol = textGraphic.Symbol.Symbol;var textSymbol = symbol as CIMTextSymbol;textSymbol.OffsetX = 2;textSymbol.OffsetY = 3;textSymbol.HorizontalAlignment = HorizontalAlignment.Center;// 加载更新后的文本图形annoProperties.LoadFromTextGraphic(textGraphic);// 将注释属性分配回去insp.SetAnnotationProperties(annoProperties);EditOperation op = new EditOperation();op.Name = "modify symbol";op.Modify(insp);bool result = op.Execute();});
6 接地到网格
CIMGroundToGridCorrection correction = null;
bool isCorecting = correction.IsCorrecting(); // 等同于 correction != null && correction.Enabled;
bool UsingOffset = correction.UsingDirectionOffset(); // 等同于 correction.IsCorrecting() && correction.UseDirection;
double dOffset = correction.GetDirectionOffset(); // 等同于 correction.UsingDirectionOffset() ? correction.Direction : DefaultDirectionOffset;
bool usingDistanceFactor = correction.UsingDistanceFactor(); // 等同于 correction.IsCorrecting() && correction.UseScale;
bool usingElevation = correction.UsingElevationMode(); // 等同于 correction.UsingDistanceFactor() && c.ScaleType == GroundToGridScaleType.ComputeUsingElevation;
bool usingSFactor = correction.UsingConstantScaleFactor(); //; 等同于 correction.UsingDistanceFactor() && correction.ScaleType == GroundToGridScaleType.ConstantFactor;
double dSFactor = correction.GetConstantScaleFactor(); // 等同于 correction.UsingDistanceFactor() ? correction.ConstantScaleFactor : DefaultConstantScaleFactor;
相关文章:
ArcGIS Pro SDK (七)编辑 13 注解
ArcGIS Pro SDK (七)编辑 13 注解 文章目录 ArcGIS Pro SDK (七)编辑 13 注解1 注释构建工具2 以编程方式启动编辑批注3 更新批注文本4 修改批注形状5 修改批注文本图形6 接地到网格 环境:Visual Studio 2022 .NET6 …...
模拟面试001-Java开发工程师+简历+问题+回答
模拟面试001-Java开发工程师简历问题回答 目录 模拟面试001-Java开发工程师简历问题回答面试简历面试官题问求职者回答1. 关于Java编程和技术栈2. 关于XX在线购物平台项目3. 关于XX企业资源规划系统项目4. 团队协作与项目管理5. 个人发展与职业规划 参考资料 面试简历 **个人信…...

微信小程序 ——入门介绍及简单的小程序编写
目录 一、小程序入门 1.1 什么是小程序 1.2 小程序的优点 1.3 小程序注册 1.4 安装开发工具 1.5 创建第一个小程序 二、小程序目录结构及入门案例 2.1 目录结构 2.2 入门案例 2.2.1 创建界面 2.2.2 设置标题 2.2.3 编写WXML文件 2.2.4 编写JS文件 2.2.5 编写WXSS…...
ubuntu20.04安装lio-sam
1、依赖功能包安装 sudo apt install ros-noetic-robot-state-publisher sudo apt-get install ros-noetic-robot-localization libmetis-dev 2、boost版本 boost版本查看:cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION" boost版本为1.…...

Kafka系列之Kafka知识超强总结
一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览, 搜索和其他用户的行动)是在现代网络上的许多社…...
第32讲:K8S集群与Cephfs文件系统集成
文章目录 1.在K8S环境下RBD与Cephfs的使用对比2.Cephfs环境介绍3.在Ceph集群中为K8S创建单独Cephfs文件系统和认证用户3.1.创建一个K8S使用的Cephfs文件系统3.2.将创建的Cephfs文件系统挂载到本地路径3.3.创建K8S连接Ceph集群使用的认证用户 4.K8S PV存储卷使用Cephfs文件系统4…...

服务器数据恢复—DS5300存储raid5阵列数据恢复案例
服务器存储数据恢复环境: 某单位一台某品牌DS5300存储,1个机头4个扩展柜,50块硬盘组建2组RAID5磁盘阵列(一组raid5阵列有27块成员盘,存放Oracle数据库文件;另外一组raid5阵列有23块成员盘)。存储…...

使用Ubuntu 22.04安装Frappe-Bench【二】
系列文章目录 第一章 使用VMware创建Ubuntu 22.04【一】 文章目录 系列文章目录前言什么是Frappe-Bench?使用安装ERPNext能实现什么效果? 官网给了一个说明 一、使用Ubuntu 22.04安装Frappe-Bench一、安装要求二、安装命令三、 可能出现问题 总结 前言 …...
MySQL增删改查
1.创建数据库: 使用CREATE DATABASE语句 CREATE DATABASE school;show databases; 列出MySQL数据库管理系统的数据库列表 2.切换数据库: 使用USE语句选择要操作的数据库 USE school;select database (); 当前所在库mysql> select…...

Java跳出循环的四种方式
1、continue,break,return continue:跳出当前层循环的当前语句,执行当前层循环的下一条语句。 continue标签 break:跳出当前层循环。 break标签:多层循环时,跳到具体某层循环。 return:结束所有循环…...

直播预告|飞思实验室暑期公益培训7月10日正式开启,报名从速!
01 培训背景 很荣幸地向大家宣布:卓翼飞思实验室将于7月10日正式开启为期两个月的暑期公益培训!本次培训为线上直播,由中南大学计算机学院特聘副教授,RflySim平台总研发负责人戴训华副教授主讲。 培训将基于“RflySim—智能无人…...

3-2 梯度与反向传播
3-2 梯度与反向传播 主目录点这里 梯度的含义 可以看到红色区域的变化率较大,梯度较大;绿色区域的变化率较小,梯度较小。 在二维情况下,梯度向量的方向指向函数增长最快的方向,而其大小表示增长的速率。 梯度的计算 …...

【qt】如何获取本机的IP地址?
需要用到这个类QHostInfo和pro里面添加network模块 用这个类的静态函数forName()来获取该主机名的信息 返回的就是这个类 这个QHostInfo类就包括主机的IP地址信息 用静态函数addresses()来获取 返回的是一个QHostAddress的容器 QList<QHostAddress>addrList hostIn…...
芯片的PPA-笔记
写在前面:这个仅记录自己对芯片PPA的一些思考,不一定正确,还请各位网友思辨的看待,欢迎大家谈谈自己的想法。 1 此次笔记的起因 记录的原因:自己在整理这段时间的功耗总结,又看到工艺对功耗的影响&#x…...

2024阿里巴巴全球数学竞赛决赛中的数列题解析(分析与方程方向第4题)
早点关注我,精彩不错过! 上周给大家聊了一道有LLM背景的阿里数赛题,详情请戳: 2023阿里巴巴全球数学竞赛决赛中的LLM背景题解析(应用与计算数学部分第2题) 看起来大家还比较喜欢看这种具体问题求解和思路分…...

学java的第3天 后端商城小程序工作
1.数据库的大坑 特殊字段名 ’我的图片表中有一个字段是描述我写成desc了,正好是mysql中的关键字 就不能使用了 2.后端编写 2.1可以把请求分开 在商品浏览页中 只显示商品的大致信息 当用户再点击其他按钮时在发出请求 2.2把请求合并 把数据整合到一起 利用ass…...

DevOps实战:使用GitLab+Jenkins+Kubernetes(k8s)建立CI_CD解决方案
一.系统环境 本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。 服务器版本docker软件版本Kubernetes(k8s)集群版本CPU架构CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9x86_64CI/CD解决方案架构图:CI/CD解决方案架构图描述:程序员写好代码之…...

Apache Seata配置管理原理解析
本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Apache Seata配置管理原理解析 说到Seata中的配置管理,大家可能会想到Seata中适配…...

深入理解C# log4Net日志框架:功能、使用方法与性能优势
文章目录 1、log4Net的主要特性2、log4Net框架详解配置日志级别 3、log4Net的使用示例4、性能优化与对比5、总结与展望 在软件开发过程中,日志记录是一个不可或缺的功能。它可以帮助开发者追踪错误、监控应用程序性能,以及进行调试。在C#生态系统中&…...
BDD 100K dataset 的标签数据结构(json文件)
最近在筛选自己需要的labels,所以要弄清楚这个数据集的数据结构才行: 1.整个json文件以列表形式储存 2.每张图片以一个字典形式储存 3.存储图片的字典内的以‘name’为key的键值对对应的‘value’是我需要的图片名称信息 4.存储图片的字典内的以‘label…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...