Skip to main content

StyleItem

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

Объект StyleItem обеспечивает доступ к свойствам и методам для элементов стилей.

Обсуждение

Символы, которые используются для отображения объектов или графических элементов на карте или в компоновке, сохраняются в файлах стилей (.stylx). Вы используете ленту Каталог, связанную с видом Каталог, для создания, просмотра и изменения стилей и их ресурсов. Системный стиль представлен уникальными наименованиями, такими как ArcGIS 2D, ArcGIS 3D и т.д., а также персональным стилем, именуемым Favorites. Стиль содержит элементы стиля, которые представлены значениями styleClass, например, точечный символ, легенда и масштабная линейка. Пользовательское значение style - это файл .stylx, у которого есть путь к папке и имя файла, заканчивающееся на .stylx. Пользовательские стили должны быть загружены и сохранены вместе с проектом. На них ссылаются, передавая их полный путь и имя файла, а не только их имя, как в случае с системными стилями.

Класс StyleItem позволяет создавать элементы в компоновке и в слое графики карты. Чтобы сослаться на существующий элемент стиля, используйте метод listSytleItems класса ArcGISProject и укажите соответствующее значение style_class для типа создаваемого элемента. Значение wildcard может быть использовано для уточнения поиска. Вы можете дополнительно уточнить поиск, протестировав значения свойств category и tags. Следующие методы принимают в качестве одного из параметров значение styleItem:

  • Методы createMapSurround и createTableFrameElement в классе Layout.

  • Методы createGraphicElement, createPredefinedGraphicElement и createTextElement для класса ArcGISProject.

Примечание:

Стили должны присутствовать в проекте, чтобы с их помощью можно было использовать отдельные элементы стиля, например, при создании нового элемента компоновки. Метод updateStyles на объекте ArcGISProject позволяет добавить стили в проект. См. примеры ниже, чтобы убедиться, что стили добавлены в проект.

Свойства

Имя Объяснение Тип данных

category

(Только для чтения)

Возвращает строку, которая содержит категорию элемента. Если значение отсутствует, будет возвращена пустая строка.

String

name

(Только для чтения)

Возвращает строку, которая содержит имя элемента в том виде, в котором оно отображается в Галерее символов или в Виде Каталог.

String

style

(Только для чтения)

Возвращает строку, которая представляет собой имя системного стиля, например ArcGIS 2D, персонального стиля, например Избранное, или пользовательского файла .stylx.

Примечание:

Стили должны быть уже добавлены в проект, прежде чем на них можно будет ссылаться в listStyleItems. Чтобы сослаться на пользовательский файл .stylx, используйте имя, которое появляется в приложении. Его можно просмотреть на Панели Каталог.

String

style_class

(Только для чтения)

Возвращает строку, которая содержит класс стиля элемента в том виде, в котором он отображается в Виде Каталог. В настоящий момент поддерживаются следующие классы:

  • LEGEND—Для создания и изменения элементов легенды.

  • LINE—Для создания и изменения графических элементов - полилиний.

  • NORTH_ARROW—Для создания и изменения элементов зарамочного оформления карты - стрелок севера.

  • POINT—Для создания и изменения графических элементов - точек.

  • POLYGON—Для создания и изменения графических элементов - полигонов.

  • SCALE_BAR—Для создания и изменения элементов зарамочного оформления карты - масштабных линеек.

  • TEXT—Для создания и изменения графических элементов - текста.

String

tags

(Только для чтения)

Возвращает строку с тегами, связанными с элементом. Если значение отсутствует, будет возвращена пустая строка.

String

Пример кода

StyleItem, пример 1

Следующий скрипт демонстрирует использование метода listStyleItems несколькими способами.

p = arcpy.mp.ArcGISProject('current')

#Print the point symbol names for all arrow related items in ArcGIS 2D
for styleItem in p.listStyleItems('ArcGIS 2D', 'POINT', 'Arrow*'):
    print(f'StyleItem Name: {styleItem.name}')

#Print polygon symbol names for ArcGIS 2D items from a category called shapes
for styleItem in p.listStyleItems('ArcGIS 2D', 'POLYGON'):
    if styleItem.category == 'Shapes':
        print(f'StyleItem Name: {styleItem.name}')

#Print all symbol names for a few style classes in a custom style belonging to a category
for styleClass in ['Point', 'Line', 'Polygon']:
    print(f'Style Class:{styleClass}\n')

    customStylePath = r'C:\Projects\MyOwnStyleFile.stylx'
    for styleItem in p.listStyleItems(customStylePath, styleClass):
        if styleItem.category == 'Capitol Forest':
            print(f'    StyleItem Name: {styleItem.name}')
    print('\n')
StyleItem, пример 2

Следующий сценарий создает компоновку, карту, фрейм карты и три зарамочных оформления карты, используя системный стиль ArcGIS 2D, системный стиль Favorites и файл пользовательского стиля.

def MakeRec_LL(llx, lly, w, h):
    xyRecList = [[llx, lly], [llx, lly+h], [llx+w,lly+h], [llx+w,lly], [llx,lly]]
    array = arcpy.Array([arcpy.Point(*coords) for coords in xyRecList])
    rec = arcpy.Polygon(array)
    return rec

p = arcpy.mp.ArcGISProject('current')

#Create a layout, map and mapframe
m = p.createMap('New Map', 'Map')
lyt = p.createLayout(8.5, 11, 'INCH', 'New Layout')
mf = lyt.createMapFrame(MakeRec_LL(0.5,5.5,7.5,5), m, "New Map Frame")
lyt.openView()

#Create scale bar using the system 'ArcGIS 2D' style
sbKeyVal = 'Double Alternating Scale Bar 1 Metric_Metric_8'
sbStyItm = p.listStyleItems('ArcGIS 2D', 'SCALE_BAR', key=sbKeyVal)[0]
sbEnv = MakeRec_LL(0.5, 5.5, 2.5, 0.5)
sb = lyt.createMapSurroundElement(sbEnv, 'Scale_bar', mf, sbStyItm)

#Create north arrow using the system 'Favorites' style
try:
    naStyItem = p.listStyleItems('Favorites', 'North_Arrow', 'Compass North 1')[0]
except:
    print('Error: A style item was not properly referenced, exiting script.')
    arcpy.AddError('Error: A style item was not properly referenced, exiting script.')
    exit()
lyt.createMapSurroundElement(arcpy.Point(7,7), 'North_Arrow', mf, naStyItem)

#Create a legend using a custom stylx file but first ensure it is added to the project
customStylePath = r'C:\Projects\MyOwnStyleFile.stylx'
styleItemList = p.styles
if not customStylePath in styleItemList:
    styleItemList.append(customStylePath)
    p.updateStyles(styleItemList)
try:
    legStyItm = p.listStyleItems(customStylePath, 'LEGEND', key='*Legend 2*')[0]
except:
    print('Error: A style item was not properly referenced, exiting script.')
    arcpy.AddError('Error: A style item was not properly referenced, exiting script.')
    exit()
lyt.createMapSurroundElement(arcpy.Point(0.5, 5), 'Legend', mf, legStyItm)
StyleItem, пример 3

Следующий скрипт использует метод applyStyleItem, чтобы применить элемент стиля к существующим элементам компоновки с помощью системного стиля ArcGIS 2D, системного стиля Favorites и файла пользовательского стиля.

p = arcpy.mp.ArcGISProject('current')
lyt = p.listLayouts('New Layout')[0]

#Modify the scale bar using the system 'ArcGIS 2D' style
sbKeyVal = 'Alternating Scale Bar 1 Metric*'
sbStyItm = p.listStyleItems('ArcGIS 2D', 'SCALE_BAR', key=sbKeyVal)[0]
sb = lyt.listElements('MAPSURROUND_ELEMENT', 'Scale Bar')[0]
sb.applyStyleItem(sbStyItm)

#Modify the north arrow using the system 'Favorites' style
try:
    naStyItem = p.listStyleItems('Favorites', 'North_Arrow', wildcard = 'ArcGIS North 10')[0]
except:
    print('Error: A style item was not properly referenced, exiting script.')
    arcpy.AddError('Error: A style item was not properly referenced, exiting script.')
    exit()
na = lyt.listElements('MAPSURROUND_ELEMENT', 'North Arrow')[0]
na.applyStyleItem(naStyItem)

#Modify a legend using a custom stylx file but make sure it is added to the project first
customStylePath = r'C:\Projects\MyOwnStyleFile.stylx'
styleItemList = p.styles
if not customStylePath in styleItemList:
    styleItemList.append(customStylePath)
    p.updateStyles(styleItemList)
try:
    legStyItm = p.listStyleItems(customStylePath, 'LEGEND', key='*Legend 1*')[0]
except:
    print('Error: A style item was not properly referenced, exiting script.')
    arcpy.AddError('Error: A style item was properly not referenced, exiting script.')
    exit()
leg = lyt.listElements('LEGEND_ELEMENT', 'Legend')[0]
leg.applyStyleItem(legStyItm)