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.
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 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.
To make a procedural symbol, complete the following steps:
- In the Contents pane, click the symbol to modify.
The Symbology pane appears in Format Symbol mode, displaying the current symbol.
- In the Symbology pane, switch to the Properties view and click the Layers tab to see the symbol layers of the current symbol. There may be only one symbol layer.
- Highlight an existing marker symbol layer or fill symbol layer in the symbol, or from the Structure tab , add a new symbol layer first.
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.
- In the drop-down menu in the heading of the symbol layer, choose Procedural marker (for marker symbol layers) or Procedural fill (for fill symbol layers).
- 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 either of these, click the No attribute mapping defined button next to a property. On the Set attribute mapping dialog box choose a field, or write an expression in Arcade or VBScript by clicking the Set an expression button .
Consider removing all other symbol layers, as they will likely interfere with the appearance of the procedural symbol layer. On the Structure tab , click the Delete button next to a symbol layer to delete it.