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 catagory 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
sbName = 'Double Alternating Scale Bar 1 Metric'
sbStyItm = p.listStyleItems('ArcGIS 2D', 'SCALE_BAR', sbName)[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
naStyItem = p.listStyleItems('Favorites', 'North_Arrow', 'Compass North 1')[0]
lyt.createMapSurroundElement(arcpy.Point(7,7), 'North_Arrow', mf, naStyItem)
                      
#Create a legend using a custom stylx file
customStylePath = r'C:\Projects\MyOwnStyleFile.stylx'
styleItemList = p.styles
if not customStylePath in styleItemList:
    styleItemList.append(customStylePath)
    p.updateStyles(styleItemList)
legStyItm = p.listStyleItems(customStylePath, 'LEGEND', 'Legend 2')[0]
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
sbName = 'Alternating Scale Bar 1 Metric'
sbStyItm = p.listStyleItems('ArcGIS 2D', 'SCALE_BAR', sbName)[0]
sb = lyt.listElements('MAPSURROUND_ELEMENT', 'Scale Bar')[0]
sb.applyStyleItem(sbStyItm)

#Modify the north arrow using the system 'Favorites' style
naStyItem = p.listStyleItems('Favorites', 'North_Arrow', 'ArcGIS North 10')[0]
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)
legStyItm = p.listStyleItems(customStylePath, 'LEGEND', 'Legend 1')[0]
leg = lyt.listElements('LEGEND_ELEMENT', 'Legend')[0]
leg.applyStyleItem(legStyItm)