ARCGIS PRO DSK GraphicsLayer创建文本要素

news2024/9/25 9:41:18

一、判断GraphicsLayer层【地块注记】是否存在,如果不存在则新建、如果存在则删除所有要素

Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault() '获取当前map对象中的GetLayer图层
Await QueuedTask.Run(Sub()
                         If GraphicsLayer Is Nothing = True Then
                             '创建 GraphicsLayer
                             If pmap.MapType <> MapType.Map Then Exit Sub       ' Not 2D
                             Dim gl_param = New GraphicsLayerCreationParams
                             gl_param.Name = "地块注记"
                             '默认情况下会添加到目录的顶部
                             GraphicsLayer = LayerFactory.Instance.CreateLayer(Of ArcGIS.Desktop.Mapping.GraphicsLayer)(gl_param, pmap)
                         Else
                             '全选文本
                             Dim zj_zdmane As String = ""
                                 zj_zdmane = "地块注记"
                             Dim elements = GraphicsLayer.GetElementsAsFlattenedList().Where(Function(gele As GraphicElement) gele.Name.StartsWith(zj_zdmane)) ’获取GetLayer图层中定义的元素(本例为text)
                             '删除选择text
                             GraphicsLayer.SelectElements(elements)
                             GraphicsLayer.RemoveElements(GraphicsLayer.GetSelectedElements())
                         End If
                         MapView.Active.Redraw(True)  '视图刷新
                     End Sub)

二、CreateTextGraphicElement 方法
       ​GraphicElement CreateTextGraphicElement( 
                IElementContainer elementContainer,
                TextType textType,
                Geometry geometry,
                CIMTextSymbol textSymbol,
                string text,
                string elementName,
                bool select,                    【可选】
                ElementInfo elementInfo 【可选】
             )
             textType:要创建的文本图形的类型​

成员描述
CircleParagraph圆文本
EllipseParagraph椭圆文本
NoneNone- 默认
PointText点文本
PolygonParagraph多边形文本
RectangleParagraph矩形文本
SplinedText沿直线或曲线样条的文本

三、检查应用程序中是否有特定字体可用于 Pro 会话。 必须在 MCT 上调用此方法。IsFontAvailable 方法 (SymbolFactory)
public bool IsFontAvailable( 
                  string fontName,   
                  string fontStyle,
                  FontType fontType,
                  List<CIMFontVariation> fontVariationSettings
               )
               fontName:字体簇的名称。
               fontStyle :字体样式的名称。
               fontType:字体类型。
               fontVariationSettings:要应用的任何字体变体设置。可以为 null。
返回值:一个布尔值,表示字体是否可用。例如:

Dim BOOT=SymbolFactory.Instance.IsFontAvailable("Arial", "Bold", FontType.Unspecified, null)

四、创建文本
1、创建简单的文本符号(Creates a simple text symbol)创建一个大小为8.5、字体系列为“Corbel”、字体样式为“Regular”的简单黑色文本符号。

Await QueuedTask.Run(Sub()
                         pmap = MapView.Active.Map  ‘获取激活的map对象
                         Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象
                         Dim TextSymbol =SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8.5, "Corbel", "Regular")
                         '文本的偏移量
                         TextSymbol.OffsetX = 0.5
                         TextSymbol.OffsetY = 0.5
                         Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)
                         Dim text As String = "Forest Grove"
                         Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")
                     End Sub)

效果:

2、创建创建带有光晕环的文本符号(Creates a text symbol with a halo)

Await QueuedTask.Run(Sub()
                         pmap = MapView.Active.Map  ‘获取激活的map对象
                         Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象
                         
                         Dim haloPoly = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.RedRGB, SimpleFillStyle.Solid)

                         Dim TextSymbol = SymbolFactory.Instance.ConstructTextSymbol(haloPoly, 10, "Arial", "Bold")
                         '文本的偏移量
                         TextSymbol.OffsetX = 0.5
                         TextSymbol.OffsetY = 0.5
                         Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)
                         Dim text As String = "Portland"
                         Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")
                     End Sub)

 效果:

3、创建简单的牵引文本符号(Creates a text symbol with a halo)

Await QueuedTask.Run(Sub()
                         pmap = MapView.Active.Map  ‘获取激活的map对象
                         Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象
                         
                         Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 10, "Verdana", "Regular")

                         Dim lineCalloutSymbol = new CIMSimpleLineCallout()
                         Dim lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot)
                         lineCalloutSymbol.LineSymbol = lineSymbol
                         '文本的偏移量
                         TextSymbol.OffsetX = 10
                         TextSymbol.OffsetY = 10
                         textSymbol.Callout = lineCalloutSymbol
                         Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)
                         Dim text As String = "Forest Grove"
                         Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")
                     End Sub)

效果:

4、创建圆角矩形的牵引文本框符号(Creates a balloon callout text symbol)

Await QueuedTask.Run(Sub()
                         pmap = MapView.Active.Map  ‘获取激活的map对象
                         Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象
                         Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)
                         Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 11, "Corbel", "Regular")
                         Dim balloonCallout = new CIMBalloonCallout()
                         BalloonCallout.BalloonStyle = BalloonCalloutStyle.RoundedRectangle

                         Dim polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.BlackRGB, SimpleFillStyle.Solid)
                         BalloonCallout.BackgroundSymbol = polySymbol
                         BalloonCallout.Margin = new CIMTextMargin
                         With BalloonCallout.Margin
                            .Left = 5
                            .Right = 5
                            .Bottom = 5
                            .Top = 5
                        End With
                        TextSymbol.Callout = balloonCallout
                        Dim text As String = "Forest Grove"
                        Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.RectangleParagraph, Location, TextSymbol, text, "地块注记")
                     End Sub)

效果:

5、创建点符号的文本符号(Creates a point callout text symbol)

Await QueuedTask.Run(Sub()
                         pmap = MapView.Active.Map  ‘获取激活的map对象
                         Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象
                         
                         Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.WhiteRGB, 6, "Tahoma", "Bold")
                         Dim shieldCalloutSymbol = new CIMPointSymbolCallout()
                         Dim symbolStyleItem = GetPointSymbol("ArcGIS 2D", "Shield 1")             
                         ShieldCalloutSymbol.PointSymbol = symbolStyleItem.Symbol as CIMPointSymbol
                         ShieldCalloutSymbol.PointSymbol.SetSize(18.0)
                         TextSymbol.Callout = shieldCalloutSymbol
                         Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)
                         Dim text As String = "I5"
                         Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer, TextType.PointText, Location, TextSymbol, text, "地块注记")
                     End Sub)

效果:

6、创建设置矩形背景色的牵引文本框符号(Creates a background callout text symbol)

Await QueuedTask.Run(Sub()
                         pmap = MapView.Active.Map  ‘获取激活的map对象
                         Dim GraphicsLayer = pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault()  ‘获取的GraphicsLayer对象
                         Dim Location As MapPoint = MapPointBuilderEx.CreateMapPoint(PX,PY)
                         Dim textSymbol = SymbolFactory.Instance.ConstructTextSymbol(ColorFactory.Instance.BlackRGB, 8, "Tahoma", "Bold")
                         Dim backgroundCalloutSymbol = new CIMBackgroundCallout()
                         Dim lineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 1, SimpleLineStyle.DashDotDot)
                         Dim aquaBackground = ColorFactory.Instance.CreateRGBColor(190, 255, 232, 100)
                         Dim polySymbol = SymbolFactory.Instance.ConstructPolygonSymbol(aquaBackground, SimpleFillStyle.Solid)
                         BackgroundCalloutSymbol.LeaderLineSymbol = lineSymbol
                         TextSymbol.OffsetX = 10
                         TextSymbol.OffsetY = 10
                         BackgroundCalloutSymbol.BackgroundSymbol = polySymbol
                         Dim accentSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlackRGB, 2, SimpleLineStyle.Solid)
                         BackgroundCalloutSymbol.AccentBarSymbol = accentSymbol
                         BackgroundCalloutSymbol.Margin = new CIMTextMargin
                         With BalloonCallout.Margin
                              .Left = 5
                              .Right = 5
                              .Bottom = 5
                              .Top = 5
                        End With
                        TextSymbol.Callout = backgroundCalloutSymbol
                        Dim text As String = "Forest Grove"
                        Dim polyTxtElm As GraphicElement = ElementFactory.Instance.CreateTextGraphicElement(GraphicsLayer,TextType.RectangleParagraph, poly, TextSymbol, text, "地块注记")
                     End Sub)

效果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十六章 设备驱动IO控制

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

云计算安全扩展要求解读

云计算简介&#xff1a; 一种全新网络服务方式&#xff0c;将传统的以桌面为核 心的任务处理转变为以网络为核心的任务处理&#xff0c; 利用互联网实现自己想要完成的一切处理任务&#xff0c; 使网络成为传递服务、计算力和信息的综合媒 介&#xff0c;真正实现按需计算、多…

揭秘Django与Neo4j:构建智能知识图谱的终极指南

揭秘Django与Neo4j:构建智能知识图谱的终极指南 前言 图是一种用于对象之间的成对关系进行建模的数学结构。 它由两个主要元素组成:节点和关系。 节点:节点可以看作是传统数据库中的记录。每个节点代表一个对象或实体,例如一个人或一个地方。节点按标签分类,这有助于根…

自研点直播转码核心

1. 背景 视频转码是将视频文件经过解封装、解码、滤镜处理、编码、封装从而转换为另一个视频文件的过程&#xff0c;B站每天都有大量的视频原片上传后经过转码系统转换为多个不同分辨率。转换后的视频在画质接近原片的前提下会拥有更低的码率&#xff0c;因此会提高网络传输时的…

3.3-LSTM的改进

文章目录 1改进点1.1多层化1.2 dropout1.2.1具体概念1.2.2应该插入到LSTM模型的哪里 1.3权重共享 2改进之后的LSTMLM的代码实现2.1初始化2.2前向计算2.3反向传播 3相应的学习代码的实现4总结 1改进点 1.1多层化 加深神经网络的层数往往能够学习更复杂的模式&#xff1b;因此这…

定制化爬虫管理:为企业量身打造的数据抓取方案

在数据驱动的时代&#xff0c;企业如何高效、安全地获取互联网上的宝贵信息&#xff1f;定制化爬虫管理服务应运而生&#xff0c;成为解锁专属数据宝藏的金钥匙。本文将深入探讨定制化爬虫管理如何为企业量身打造数据抓取方案&#xff0c;揭秘其在海量信息中精准捕获价值数据的…

C++初阶学习——探索STL奥秘——标准库中的string类

1. 为什么学习string类&#xff1f; 在我们学习C语言的时候&#xff0c;有一个点是非常难处理的&#xff0c;那就是字符串&#xff0c;在我们对字符串访问&#xff0c;增删查改时都是非常不便的&#xff0c;所以我们封装了一个string类主要来处理字符串有关的问题 2. 标准库中…

Premiere简约手绘风格箭头标题文字动画素材MOGRT

18个简约手绘风格箭头标题文字动画 | Premiere Pro mogrt 具有可定制的颜色和可编辑的文本。包括手绘箭头和文本动画&#xff0c;非常适合在项目中添加动态指针、标记和方向指示器。非常适合信息图表、社交媒体内容、下三分之一、徽章和简约界面。 项目特点&#xff1a; 独特…

python机器学习8--网络

1.超文本传输协议HTTP GET 在实际开发应用程序时&#xff0c;一定都会利用WiFi网络进行连接&#xff0c;再通过HTTP的方式读入后台的数据&#xff0c;并下载和显示在用户的PC上。这靠的是网络服务的技术&#xff0c;也就是大家提到的Web Service。而与HTTP服务器交换数据有两种…

北斗卫星导航:改变出行方式的科技奇迹

随着科技的不断发展&#xff0c;人们的出行方式也发生了翻天覆地的变化。而现代导航技术在其中扮演着重要的角色&#xff0c;尤其是北斗卫星导航系统的出现&#xff0c;更是给出行方式带来了巨大的改变。北斗卫星导航系统作为全球最大的卫星导航系统之一&#xff0c;不仅改善了…

《Milvus Cloud向量数据库指南》——BGE-M3:多功能、多语言、多粒度的文本表示学习模型

引言 在自然语言处理(NLP)领域,随着大数据时代的到来,对文本信息的精准处理与高效检索成为了研究热点。BERT(Bidirectional Encoder Representations from Transformers)作为近年来NLP领域的里程碑式模型,以其强大的上下文理解能力在多项任务中取得了显著成效。然而,面…

一文看懂以太坊智能合约!

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

学习笔记之Java篇(0725)

p this 普通方法中&#xff0c;this总是指向调用该方法的对象。 构造方法中&#xff0c;this总是指向正要初始化的对象。 this&#xff08;&#xff09;调用必须重载的构造方法&#xff0c;避免相同地址初始化代码&#xff0c;但只能在构造方法中用&#xff0c;比企鹅必须位…

相关性模型-正态分布均值假设检验★★★

该博客为个人学习清风建模的学习笔记&#xff0c;部分课程可以在B站&#xff1a;【强烈推荐】清风&#xff1a;数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 1双侧检验 2单侧检验 3t检验 4两个正态总体均值差的检验 5逐对比较法 …

Origin制作线性拟合回归图

选中数据&#xff0c;点下方散点图 调整散点颜色 在分析中打开线性拟合回归 添加文本 显示上轴

四、单线程多路IO复用+多线程业务工作池

文章目录 一、前言1 编译方法 二、单线程多路IO复用多线程业务工作池结构三、重写Client_Context类四、编写Server类 一、前言 我们以及讲完单线程多路IO复用 以及任务调度与执行的C线程池&#xff0c;接下来我们就给他结合起来。 由于项目变大&#xff0c;尝试解耦项目&#…

基于opencv的答题卡识别

文章目录 一、背景需求二、处理步骤图片预处理检测到答题卡轮廓透视变换找每个圆圈的轮廓轮廓排序判断是否答题正确 一、背景需求 传统的手动评分方法耗时且容易出错&#xff0c;自动化评分可以可以显著提高评分过程的速度和准确性、减少人工成本。 答题卡图片处理效果如下&am…

使用法国云手机进行面向法国的社媒营销

在当今数字化和全球化的时代&#xff0c;社交媒体已经成为企业营销和拓展市场的重要工具。对于想进入法国市场的企业来说&#xff0c;如何在海外社媒营销中脱颖而出、抓住更多的市场份额&#xff0c;成为了一个关键问题。法国云手机正为企业提供全新的营销工具&#xff0c;助力…

观测云产品更新 | 异常追踪、场景图表、快照、监控等

观测云更新 异常追踪 1、新增【分析看板】&#xff1a;可视化展示不同指标数据。 2、新增【日程】管理和【通知策略】&#xff1a;对 Issue 的内容范围做进一步通知分配。 场景 1、图表&#xff1a;新增【时间偏移】设置。启用时间偏移后&#xff0c;当查询相对时间区间时&a…

项目架构知识点总结

项目架构知识点总结 【一】重要注解【1】SpringBootApplication&#xff08;1&#xff09;⭐️ComponentScan 注解&#xff08;2&#xff09;⭐️EnableAutoConfiguration 注解&#xff08;3&#xff09;⭐️SpringBootConfiguration 注解&#xff08;4&#xff09;Inherited 注…