SetParameterSymbology

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

Задает свойства символов указанного выходного параметра инструмента-скрипта.

Символы могут быть заданы с помощью пути к файлу слоя или строкового представления 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:

  • JSONRENDERER=—A JSON renderer object formatted using either the CIM or Esri Web Map schema.
  • JSONCIMDEF=—A JSON CIM definition object for a layer.
  • JSONCLASSDEF=—A JSON class definition from the Esri Web Map schema.
String

Пример кода

SetParameterSymbology, пример 1

Настройка символов для выходных растровых данных инструмента-скрипта с помощью файла .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)
SetParameterSymbology, пример 2

Настройка символов для выходных данных инструмента-скрипта с помощью объекта отображения 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}")
SetParameterSymbology, пример 3

Настройка символов на основе типа выходной геометрии для инструмента-скрипта, используя объект отображения 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)
SetParameterSymbology, пример 4

Настройка символов для выходных данных инструмента-скрипта с динамическим отображением с помощью метода Естественные границы, используя определение классификации 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}")

Связанные разделы