摘要
StyleItem 对象可用于访问样式元素的属性和方法。
说明
您用于在地图或布局中显示要素或图形元素的符号存储在样式文件 (.stylx) 中。 可以使用与“目录”视图相关联的目录功能区来创建、查看和修改样式及其内容。 系统样式将组织到唯一名称(例如 ArcGIS 2D、ArcGIS 3D 等)和名为收藏夹的个人样式中。 样式包含按 styleClass 值组织的样式项目,例如点符号、图例和比例尺。 自定义 style 值是一个 .stylx 文件,该文件具有文件夹路径和以 .stylx 结尾的文件名。 自定义样式必须随工程一起加载和保存。 通过传递其完整路径和文件名来进行引用,而不仅仅是系统样式中的名称。
通过 StyleItem 类,您可以在布局中和地图的图形图层中创建元素。 要引用现有样式项目,请使用 ArcGISProject 类上的 listSytleItems 方法并为要创建的元素类型指定相应的 style_class 值。 wildcard 值可用于优化搜索。 可以通过测试 category 和 tags 属性的值来进一步优化搜索。 以下方法接受使用 styleItem 值作为参数:
- Layout 类上的 createMapSurround 方法。
- ArcGISProject 类上的 createGraphicElement、createPredefinedGraphicElement 和 createTextElement 方法。
属性
属性 | 说明 | 数据类型 |
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 样式和自定义样式文件创建布局、地图、地图框和 3 个地图整饰要素。
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)