Annotation

Краткая информация

Объект Annotation обеспечивает доступ к текстовой графике объекта аннотации.

Обсуждение

Доступ к объектам Annotation можно получить с помощью курсора или путем получения их из строки, определенной с помощью токена ANNO@. Они могут быть созданы для использования с InsertCursor, когда значение поля токена ANNO@ определено перед передачей в метод insertRow.

Обзор метода

МетодОписание
getGraphic (cim_version)

Получает текстовую графику CIM объекта аннотации.

setGraphic (definition_object)

Задает текстовую графику CIM объекта аннотации.

Методы

getGraphic (cim_version)
ПараметрОписаниеТип данных
cim_version

A string that represents the major version of the CIM.

  • V2—The 2.x version of the CIM will be used.
  • V3—The 3.x version of the CIM will be used.

When you return an object's CIM definition, you must specify acim_version parameter value. Esri follows the semantic versioning specification. This means that at major releases (for example, 3.0), breaking API changes are allowed. The cim_version parameter provides control over the version of the CIM that is used, in the possible event of a breaking change in a future version. If you are authoring scripts for ArcGIS Pro 2.x, specify the cim_version as V2. If you are authoring scripts for ArcGIS Pro 3.x, specify the cim_version as V3. Scripts with a + value of V2 will continue to work in ArcGIS Pro 3.x.

String
Возвращаемое значение
Тип данныхОписание
Object

Возвращает CIM-графику объекта аннотации.

Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.

setGraphic (definition_object)
ПараметрОписаниеТип данных
definition_object

A modified CIM graphic object originally retrieved using the getGraphic method or created using the arcpy.cim.CreateCIMObjectFromClassName function.

Object

Более подробно о работе с CIM и примеры см. Доступ к CIM в Python.

Пример кода

Annotation, пример 1

Используйте SearchCursor для отображения информации из текстового графического изображения.

import arcpy

infc = "c:/data/fgdb.gdb/anno_fc"

# Enter a for loop for each feature
with arcpy.da.SearchCursor(infc, ['OID@','ANNO@']) as cursor:
    for row in cursor:
        # Access the current annotation feature's object and access the text
        # graphic
        annoObj = row[1]
        cimTextGraphic = annoObj.getGraphic("V3")

        # Print if a text graphic has a leader line
        print(f'Feature {row[0]} has leader: {len(cimTextGraphic.leaders) > 0}')
Annotation, пример 2

Используйте UpdateCursor для обновления значения в текстовом графическом изображении.

import arcpy

infc = "c:/data/fgdb.gdb/anno_fc_1"

# Enter a for loop for each feature
with arcpy.da.UpdateCursor(infc, ['OID@', 'ANNO@']) as cursor:
    for row in cursor:
        # Access the current annotation feature's object and access the text
        # graphic
        annoObj = row[1]
        cimTextGraphic = annoObj.getGraphic("V3")
        cimTextGraphic.symbol.symbol.underline = True
        annoObj.setGraphic(cimTextGraphic)

        row[1] = annoObj
        cursor.updateRow(row)
Annotation, пример 3

Используйте InsertCursor для добавления нового объекта аннотации.

import arcpy

# Create components for text symbol
fillRGBColor = arcpy.cim.CreateCIMObjectFromClassName('CIMRGBColor', 'V3')
fillRGBColor.values = [0, 0, 0, 50]

symLyr1 = arcpy.cim.CreateCIMObjectFromClassName('CIMSolidFill', 'V3')
symLyr1.color = fillRGBColor

polySym = arcpy.cim.CreateCIMObjectFromClassName('CIMPolygonSymbol', 'V3')
polySym.symbolLayers = [symLyr1]

# Create the text symbol itself and assign values
textSym = arcpy.cim.CreateCIMObjectFromClassName('CIMTextSymbol', 'V3')
textSym.symbol = polySym
textSym.fontFamilyName = "Arial"
textSym.fontStyleName = "Regular"
textSym.height = 10

infc = "c:/data/fgdb.gdb/anno_fc_1"

flds2ins = ["ANNO@"]
with arcpy.da.InsertCursor(infc, flds2ins) as cursor:
    cimSymbolRef = arcpy.cim.CreateCIMObjectFromClassName('CIMSymbolReference', 'V3')
    cimSymbolRef.symbol = textSym

    # Reference symbol 0, this will allow the symbol to be stored as symbol
    # reference + overrides
    cimSymbolRef.symbolName = "0"
    cimTextGraphic = arcpy.cim.CreateCIMObjectFromClassName('CIMTextGraphic', 'V3')
    cimTextGraphic.symbol = cimSymbolRef
    cimTextGraphic.text = "Test Graphic"

    array = arcpy.Array([arcpy.Point(500000.0, -25.0), arcpy.Point(500000.0, -10.5)])
    spatial_reference = arcpy.SpatialReference(26917)
    cimTextGraphic.shape = arcpy.Polyline(array, spatial_reference)

    annoObj = arcpy.Annotation()
    annoObj.setGraphic(cimTextGraphic)
    cursor.insertRow([annoObj])

Связанные разделы