Skip To Content

Procedural symbology

Procedural symbology uses script-based logic to construct complex 3D objects and textures from simple geometries to display point, polygon, or multipatch features. For example, procedural symbology can be used to render point features as realistic-looking trees, polygon features as seventeenth-century Parisian buildings, or multipatch features with rule-based painted textures.

Both fill symbol layers and marker symbol layers can be procedural when they are in a 3D context. In a 2D context, procedural symbol content is ignored and does not draw.

Procedural symbols leverage the logic in a CityEngine rule package (.rpk) to draw features. Rule packages are designed such that certain symbol properties are exposed for configuration. You can customize the appearance of procedural symbol layers by adjusting these symbol properties or by connecting the properties to feature attribute fields.

ArcGIS Pro includes system styles with symbols that contain procedural symbol layers. Alternatively, you can author your own procedural symbols in CityEngine and export them as .rpk files for use in ArcGIS Pro. You can find and download additional rule packages in ArcGIS Online.

  • When searching in a gallery for symbols that contain procedural layers, try using procedural or rpk as a search term.
  • When searching ArcGIS Online for rule packages, search for rpk.

Make a procedural symbol

  1. In the Contents pane, click the symbol to modify.

    The Symbology pane appears in Format Symbol mode, displaying the current symbol.

  2. In the Symbology pane, switch to the Properties view and click the Layers tab Layers to see the symbol layers of the current symbol. There may be only one symbol layer.
  3. Highlight a marker or fill symbol layer as appropriate.

    Marker symbol layer

    Procedural marker symbol layers can only exist within point symbols. Procedural markers along a line, along a polygon outline, or within a polygon, are not supported.

    Fill symbol layer

    Procedural fill symbol layers can exist in polygon symbols, mesh symbols, point symbols (with a symbol effect), and line symbols (with a symbol effect).

  4. Click the Rule button to choose a rule package.

    Marker symbol layer (in a point symbol)

    The @StartRule of the rule package must specify @InPoint annotation to indicate that it is intended for point geometry.

    Fill symbol layer in a polygon, point, or line symbol

    The @StartRule of the rule package must specify @InPolygon annotation to indicate that it is intended for polygon geometry.

    Fill symbol layer in a mesh symbol

    The @StartRule of the rule package must specify @InMesh annotation to indicate that it is intended for multipatch geometry.

    The properties exposed by the rule package are shown in the pane. Symbol properties in a rule package whose name and data type match feature attribute fields are automatically connected to that field.

    The properties of the procedural rule have a default value, which is shown next to each property. But, the power of procedural symbology comes when you connect some of these properties to fields in the data, or write expressions. To do this, click the No attribute mapping defined button No attribute mapping defined next to a property. The Set attribute mapping dialog box opens. Here, you can choose a field, or write an expression in Arcade or VBScript by clicking the Set an expression button Set an expression.


Consider removing all other symbol layers, as they will likely interfere with the appearance of the procedural symbol layer. On the Structure tab Structure, click the Delete button Delete next to a symbol layer to delete it.

Related topics

In this topic
  1. Make a procedural symbol