Краткая информация
Задает свойства символов указанного выходного параметра инструмента-скрипта.
Символы могут быть заданы с помощью пути к файлу слоя или строкового представления JSON Картографической информационной модели (CIM) или спецификации веб-карты Esri. Можно настроить символы и для векторных и для растровых выходных слоев.
Обсуждение
Эта функция используется для применения символов к выходным данным инструмента-скрипта. При указании пути к файлу слоя в параметре text скрипт будет зависеть от существующего файла слоя. Вместо файлов предустановленных слоев эти символы можно сохранить в скрипте, перенеся строку JSON CIM или объекта спецификации веб-карты и добавив перед ней JSONRENDERER=, JSONCIMDEF= или JSONCLASSDEF=. Подробнее о параметрах получения строки JSON объекта см. в разделе Настройка выходных символов в скриптах.
Синтаксис
SetParameterSymbology (index, text)
Параметр | Описание | Тип данных |
index | The specified output parameter's index position in the parameter list. The specified symbology properties are applied to this output of the script tool. | Integer |
text | Set the specified parameter's symbology properties using the path to a layer file (.lyrx) or a JSON string representation of a CIM or Web Map Specification object. A JSON string representation must be preceded by the appropriate keyword as follows:
| String |
Пример кода
Настройка символов для выходных растровых данных инструмента-скрипта с помощью файла .lyrx, сохраненного в папке для распространения этого инструмента. Данный инструмент-скрипт имеет два параметра: входной и выходной растровые слои.
import arcpy
# Obtain script tool input parameter values.
inras = arcpy.GetParameter(0)
outras = arcpy.GetParameterAsText(1)
outsym = r"C:\Path\To\OutRasterSymbology.lyrx"
# Reclassify raster and apply custom symbology from layer
reclass = arcpy.sa.Reclassify(
inras,
"Value",
arcpy.sa.RemapRange(
[[0, 100, 0],
[101, 200, 1],
[201, 300, 3]]),
"NODATA")
reclass.save(outras)
arcpy.SetParameterSymbology(1, outsym)
Настройка символов для выходных данных инструмента-скрипта с помощью объекта отображения CIM. Данный инструмент-скрипт имеет два параметра: входной и выходной векторные слои.
import arcpy
# Obtain script tool input parameter values.
infc = arcpy.GetParameter(0)
outfc = arcpy.GetParameter(1)
# Define symbology
outsym = """{
"type" : "CIMSimpleRenderer",
"patch" : "Default",
"symbol" : {
"type" : "CIMSymbolReference",
"symbol" : {
"type" : "CIMLineSymbol",
"symbolLayers" : [
{
"type" : "CIMSolidStroke",
"effects" : [
{
"type" : "CIMGeometricEffectDashes",
"dashTemplate" : [ 5, 5],
"lineDashEnding" : "NoConstraint",
"controlPointEnding" : "NoConstraint"
}
],
"enable" : true,
"capStyle" : "Round",
"joinStyle" : "Round",
"lineStyle3D" : "Strip",
"miterLimit" : 10,
"width" : 1,
"color" : {
"type" : "CIMRGBColor",
"values" : [
0,
0,
0,
100
]
}
}
]
}
}
}"""
# Convert input polygon to line and apply a dashed line symbology
arcpy.management.FeatureToLine(infc, outfc)
arcpy.SetParameterSymbology(1, f"JSONRENDERER={outsym}")
Настройка символов на основе типа выходной геометрии для инструмента-скрипта, используя объект отображения JSON веб-карты. Данный инструмент-скрипт имеет два параметра: входной и выходной векторные слои.
import arcpy
# Obtain script tool input parameter values.
infc = arcpy.GetParameter(0)
outfc = arcpy.GetParameter(1)
desc = arcpy.da.Describe(infc)
# Define symbology
sym_poly = """{
"type": "simple",
"symbol": {
"type": "esriSFS",
"style": "esriSFSSolid",
"color": [
10,
120,
230,
255
],
"outline": {
"type": "esriSLS",
"style": "esriSLSSolid",
"color": [
255,
255,
255,
255
],
"width": 2
}
},
"label": "",
"description": "",
"rotationType": "geographic",
"rotationExpression": ""
}"""
sym_line = """{
"type": "simple",
"symbol": {
"type": "esriSLS",
"style": "esriSLSSolid",
"color": [
10,
120,
230,
255
],
"width": 2
},
"label": "",
"description": "",
"rotationType": "geographic",
"rotationExpression": ""
}"""
sym_point = """{
"type": "simple",
"symbol": {
"type": "esriSMS",
"style": "esriSMSCircle",
"color": [
10,
120,
230,
255
],
"size": 8,
"angle": 0,
"xoffset": 0,
"yoffset": 0,
"outline": {
"color": [
255,
255,
255,
255
],
"width": 2
}
},
"label": "",
"description": "",
"rotationType": "geographic",
"rotationExpression": ""
}"""
# Set symbology properties for the output based on shape type of the input
if desc['shapeType'] == 'Polygon':
# JSON renderer specifying a blue polygon fill with a white outline of width 2
outsym = f"JSONRENDERER={sym_poly}"
elif desc['shapeType'] == 'Polyline':
# JSON renderer specifying a blue line of width 2
outsym = f"JSONRENDERER={sym_line}"
elif desc['shapeType'] == 'Point':
# JSON renderer specifying a blue point of size 8 with a white outline of width 2
outsym = f"JSONRENDERER={sym_point}"
else:
arcpy.AddError('Invalid shape type, must be either "Polygon", "Polyline", or "Point"')
# Execute Copy Features
arcpy.management.CopyFeatures(infc, outfc)
arcpy.SetParameterSymbology(1, outsym)
Настройка символов для выходных данных инструмента-скрипта с динамическим отображением с помощью метода Естественные границы, используя определение классификации JSON. Инструмент-скрипт включает три параметра: входной и выходной классы пространственных объектов и целочисленное значение расстояния агрегирования.
import arcpy
# Obtain script tool parameter values.
infc = arcpy.GetParameterAsText(0)
outfc = arcpy.GetParameterAsText(1)
dist = arcpy.GetParameter(2)
#Define symbology
outsym = """{
"type": "classBreaksDef",
"classificationField": "Shape_Area",
"classificationMethod": "esriClassifyNaturalBreaks",
"breakCount": 5,
"baseSymbol": {
"type": "esriSFS",
"style": "esriSFSSolid",
"color": [
0,
0,
0,
200
],
"outline": {
"type": "esriSLS",
"style": "esriSLSSolid",
"color": [
110,
110,
110,
255
],
"width": 0.4
}
},
"colorRamp": {
"type": "algorithmic",
"fromColor": [
245,
245,
0,
200
],
"toColor": [
245,
0,
0,
200
],
"algorithm": "esriHSVAlgorithm"
}
}"""
# Execute aggregate points and symbolize the output polygon by area using natural breaks.
arcpy.cartography.AggregatePoints(infc, outfc, dist)
arcpy.SetParameterSymbology(1, f"JSONCLASSDEF={outsym}")