Краткая информация
Объект StyleItem обеспечивает доступ к свойствам и методам для элементов стилей.
Обсуждение
Символы, которые используются для отображения объектов или графических элементов на карте или в компоновке, сохраняются в файлах стилей (.stylx). Вы используете ленту Каталог, связанную с видом Каталог, для создания, просмотра и изменения стилей и их ресурсов. Системный стиль представлен уникальными наименованиями, такими как ArcGIS 2D, ArcGIS 3D и т.д., а также персональным стилем, именуемым Favorites. Стиль содержит элементы стиля, которые представлены значениями styleClass, например, точечный символ, легенда и масштабная линейка. Пользовательское значение style - это файл .stylx, у которого есть путь к папке и имя файла, заканчивающееся на .stylx. Пользовательские стили должны быть загружены и сохранены вместе с проектом. На них ссылаются, передавая их полный путь и имя файла, а не только их имя, как в случае с системными стилями.
Класс StyleItem позволяет создавать элементы в компоновке и в слое графики карты. Чтобы сослаться на существующий элемент стиля, используйте метод listSytleItems класса ArcGISProject и укажите соответствующее значение style_class для типа создаваемого элемента. Значение wildcard может быть использовано для уточнения поиска. Вы можете дополнительно уточнить поиск, протестировав значения свойств category и tags. Следующие методы принимают в качестве одного из параметров значение styleItem:
- Метод createMapSurround для класса Layout.
- Методы createGraphicElement, createPredefinedGraphicElement и createTextElement для класса ArcGISProject.
Свойства
Свойство | Описание | Тип данных |
category (только чтение) | Возвращает строку, которая содержит категорию элемента. Если значение отсутствует, будет возвращена пустая строка. | String |
name (только чтение) | Возвращает строку, которая содержит имя элемента в том виде, в котором оно отображается в Галерее символов или в Виде Каталог. | String |
style (только чтение) | Возвращает строку, которая представляет собой имя системного стиля, например ArcGIS 2D, персонального стиля, например Избранное, или пользовательского файла .stylx. Примечание:Стили должны быть уже добавлены в проект, прежде чем на них можно будет ссылаться в listStyleItems. Чтобы сослаться на пользовательский файл .stylx, используйте имя, которое появляется в приложении. Его можно просмотреть на Панели Каталог. | String |
style_class (только чтение) | Возвращает строку, которая содержит класс стиля элемента в том виде, в котором он отображается в Виде Каталог. В настоящий момент поддерживаются следующие классы:
| String |
tags (только чтение) | Возвращает строку с тегами, связанными с элементом. Если значение отсутствует, будет возвращена пустая строка. | String |
Пример кода
Следующий скрипт демонстрирует использование метода 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')
Следующий сценарий создает компоновку, карту, фрейм карты и три зарамочных оформления карты, используя системный стиль 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'
legStyItm = p.listStyleItems(customStylePath, 'LEGEND', 'Legend 2')[0]
lyt.createMapSurroundElement(arcpy.Point(0.5, 5), 'Legend', mf, legStyItm)