SetParameterSymbology

Сводка

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

Символы могут быть заданы с помощью пути к файлу слоя или строкового представления JSON Картографической информационной модели (CIM) или спецификации веб-карты Esri. Можно настроить символы и для векторных и для растровых выходных слоев.

Описание

Эта функция используется для применения символов к выходным данным инструмента-скрипта. При указании пути к файлу слоя в параметре text, скрипт зависит от существующего файла слоя. Вместо того чтобы полагаться на файлы предустановленных слоев, символы можно альтернативно сохранить в скрипте, передав строку объекта JSON CIM или спецификации веб-карты, которому предшествует JSONRENDERER=, JSONCIMDEF= или JSONCLASSDEF=. Подробнее о параметрах получения строки JSON объекта см. в разделе Настройка выходных символов в скриптах.

Синтаксис

SetParameterSymbology (index, text)
ParameterОбъяснениеТип данных
index

Позиция индекса указанного выходного параметра в списке параметров. Указанные свойства символов применяются к этим выходным данным инструмента-скрипта.

Integer
text

Задайте свойства символов указанных параметров, используя путь к файлу слоя (.lyrx) или строковое представление JSON объекта модели CIM или спецификации веб-карты.

Строковое представление JSON должно предшествовать соответствующему ключевому слову следующим образом:

  • JSONRENDERER= – Объект JSON renderer, форматированный с помощью картографической модели CIM или схемы веб-карты Esri.
  • JSONCIMDEF= – Объект JSON определения картографической модели CIM для слоя.
  • JSONCLASSDEF= – определение класса JSON из схемы веб-карты Esri.
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}")

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