ARCGIS PRO SDK 利用几何对象集合创建多行注记

利用几何对象GeometryBag创建多行注记,选择编辑效果如下图

如果采用点放置,效果如下

利用几何对象GeometryBag创建多行注记实现代码:

复制代码
'''zg:字高
'''zk:字宽
'''zt:字体名称
'''ys:字体重
'''selectedColor:颜色
'''PP MapPoint点
'''AnnoLayer 写入 AnnotationLayer  注记类图层
Dim AnnoLayer As AnnotationLayer
Dim annoFCDef As AnnotationFeatureClassDefinition
Dim txtSymbol As CIMTextSymbol
Dim PsymbolRef As CIMSymbolReference
Dim PCIMTextGraphic As CIMTextGraphic
Dim PannoFeat As AnnotationFeature
Dim selectedColor As CIMColor
Dim pp As MapPoint
Dim dx As Double, dy As Double
Dim zj_text As String
Dim PannoFeat As AnnotationFeature
Dim pFeature As Feature
Await QueuedTask.Run(Sub()
                         pAnnoFeatureClass = AnnoLayer.GetFeatureClass
                         dx = PP.X
                         dy = PP.Y
                         txtSymbol = SymbolFactory.Instance.ConstructTextSymbol(selectedColor)
                         rowBuffer = pAnnoFeatureClass.CreateRowBuffer()
                         pFeature = pAnnoFeatureClass.CreateRow(rowBuffer)
                         PannoFeat = pFeature
                         PannoFeat.SetStatus(AnnotationStatus.Placed)
                         PannoFeat.SetAnnotationClassID(1)
                         PCIMTextGraphic = New CIMTextGraphic()
                         zj_text = "神坊村九组" & vbLf & "神坊村<CHR spacing='-15'>---------------------------------------</CHR>40.53" & vbLf & "DK0001"
                         PCIMTextGraphic.Text = zj_text
                         Dim pGeometryBagBuilder As GeometryBagBuilderEx = New GeometryBagBuilderEx(RF1)
                         Dim builder As ArcGIS.Core.Geometry.GeometryBag
                         Dim builline As ArcGIS.Core.Geometry.Polyline
                         Dim newPoints1 As New List(Of Coordinate2D)()
                         For i As Integer = 0 To 2
                             newPoints1 = New List(Of Coordinate2D)()
                             If i = 0 Then
                                 newPoints1.Add(New Coordinate2D(dx, dy + zg * zjhj * DQBLC / 1000))
                                 newPoints1.Add(New Coordinate2D(dx + zg * 3 * DQBLC / 1000, dy + zg * zjhj * DQBLC / 1000))
                             End If
                             If i = 1 Then
                                 newPoints1.Add(New Coordinate2D(dx, dy))
                                 newPoints1.Add(New Coordinate2D(dx + zg * 3 * DQBLC / 1000, dy))
                             End If
                             If i = 2 Then
                                 newPoints1.Add(New Coordinate2D(dx, dy - zg * zjhj * DQBLC / 1000))
                                 newPoints1.Add(New Coordinate2D(dx + zg * 3 * DQBLC / 1000, dy - zg * zjhj * DQBLC / 1000))
                             End If
                             builline = New PolylineBuilderEx(newPoints1).ToGeometry
                             pGeometryBagBuilder.AddGeometry(builline)
                         Next
                         builder = pGeometryBagBuilder.ToGeometry
                         PCIMTextGraphic.Shape = builder
                         txtSymbol.Angle = dAngle     '获取或设置应用于文本符号的旋转量 (以度为单位),以几何图形为单位。
                         txtSymbol.SetColor(selectedColor)
                         txtSymbol.HorizontalAlignment =                                                   ArcGIS.Core.CIM.HorizontalAlignment.Left
                         txtSymbol.VerticalAlignment = ArcGIS.Core.CIM.VerticalAlignment.Center
                         txtSymbol.SetSize(zg)
                         txtSymbol.FontStyleName = ys
                         txtSymbol.FontFamilyName = zt    '字体家庭名称
                         txtSymbol.Height = zg
                         txtSymbol.LetterWidth = zk / zg * 100%
                         PsymbolRef = New CIMSymbolReference()
                         PsymbolRef.Symbol = txtSymbol
                         PCIMTextGraphic.Symbol = PsymbolRef
                         PannoFeat.SetGraphic(PCIMTextGraphic)
                         pFeature.Store()
                     End Sub)
相关推荐
非科班Java出身GISer3 天前
ArcGIS JS 基础教程(38):StreamLayer 实时流数据图层
arcgis·arcgis js·arcgis js 流图层·streamlayer·arcgis 流数据图层·arcgis 实时流数据图层
赵钰老师3 天前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言
梦想的初衷~5 天前
MaxEnt 物种分布建模学习手册|理论 + R 语言 + ArcGIS 全套实操教程
arcgis·环境变量·r 语言·maxent 模型·物种分布建模·生态学研究·科研教程
jiushidt9 天前
ArcGIS Pro Add‑in 打包流程详解
arcgis·c#·.net·arcgispro
蓝悦无人机9 天前
《地面站软件开发》-第2章ArcGIS Maps SDK for Qt 改变视角
arcgis·上位机·地面站·qml·qt6·qt quick·天地图
bug嘛我经常写10 天前
MIKE21结合ArcGIS制作随时间变化的降水文件(.dfs2)-笔记
经验分享·笔记·arcgis
paiooo11 天前
用 XML 保存 LLM 会话得到高可读性会话
arcgis
Q一件事11 天前
ArcGIS中TypeError: can‘t multiply sequence by non-int of type ‘str‘错误
前端·javascript·arcgis
萧行之13 天前
Observable Plot 源码深度解析——1 认识 Observable Plot
arcgis
ノBye~13 天前
Codex CLI使用记录
arcgis