In this topic
- Defining RepresentationClass
- Representation rules and basic symbols
- Marker placements
- Feature representations and overrides
- Creating feature class representations
Defining RepresentationClass
RepresentationClass is a feature class enabled with cartographic representation capabilities that are useful for symbolizing features in the geodatabase and editing the appearance of individual features on your maps. A representation class is also called a feature class representation. The representation information is stored in the geodatabase and can be overridden for individual features in places where graphic conflict arises or when fine-tuning of symbology is required.
The workspace extension for managing representation classes is called RepresentationWorkspaceExtension. In the IRepresentationWorkspaceExtension interface, the method CreateRepresentationClass can be used to create new representation classes.
Creating feature class representations on a feature class results in the addition of two new fields: RuleID (fieldtype long to store RepresentationRule ID value) and Override (fieldtype binary large object [BLOB] to store feature-specific override information). A reference to a new or existing RepresentationRules object, which is a collection of rules used to represent features, must be present to create a new representation class. These representation rules are managed at the metadata level. See the following code examples:
[C#] public IRepresentationWorkspaceExtension GetRepWSExt(IWorkspace pWorkspace)
{
IWorkspaceExtensionManager pExtManager;
IUID pUID;
pExtManager=pWorkspace;
pUID=new UID();
pUID.Value="{FD05270A-8E0B-4823-9DEE-F149347C32B6}";
GetRepWSExt=pExtManager.FindExtension(pUID);
}
public IRepresentationClass CreateRepClass(IFeatureClass pFClass)
{
IDataset pDataset;
IWorkspace pWorkspace;
IRepresentationWorkspaceExtension pRepWSExt;
IRepresentationRules pRules;
pDataset=pFClass;
pWorkspace=pDataset.Workspace;
pRepWSExt=GetRepWSExt(pWorkspace);
pRules=new RepresentationRules();
CreateRepClass=pRepWSExt.CreateRepresentationClass(pFClass, pFClass.AliasName
+ "_Rep", "My_RuleID", "My_Override", false, pRules, null);
}
[VB.NET] Public Function GetRepWSExt(ByVal pWorkspace As IWorkspace) As IRepresentationWorkspaceExtension
Dim pExtManager As IWorkspaceExtensionManager
Dim pUID As IUID
pExtManager=pWorkspace
pUID=New UID
pUID.Value="{FD05270A-8E0B-4823-9DEE-F149347C32B6}"
GetRepWSExt=pExtManager.FindExtension(pUID)
End Function
Public Function CreateRepClass(ByVal pFClass As IFeatureClass) As IRepresentationClass
Dim pDataset As IDataset
Dim pWorkspace As IWorkspace
Dim pRepWSExt As IRepresentationWorkspaceExtension
Dim pRules As IRepresentationRules
pDataset=pFClass
pWorkspace=pDataset.Workspace
pRepWSExt=GetRepWSExt(pWorkspace) 'Uses function previously described.
pRules=New RepresentationRules
CreateRepClass=pRepWSExt.CreateRepresentationClass(pFClass, pFClass.AliasName + "_Rep", "My_RuleID", "My_Override", False, pRules, Nothing)
End Function
A feature class can have multiple representation classes associated with it, giving you the ability to produce multiple maps from a single geodatabase. The representation class, however, is always associated with a single feature class to which it belongs.
Representation rules and basic symbols
Every representation class consists of a set of representation rules that govern the symbology for its feature representations. A regular RepresentationRule consists of multiple layers of basic symbols. These symbols are BasicMarkerSymbol, BasicLineSymbol, and BasicFillSymbol for drawing markers, line strokes, and polygon fill patterns, respectively.
More complex symbology can be achieved by including one or more geometric effects in a representation rule. A GeometricEffect is a dynamic process that alters geometry at draw time. It can also change geometry type. For example, point, line, or polygon geometries can be processed through a GeometricEffectBuffer to produce buffer polygons around them.
Use the IRepresentationRuleInit interface to convert a standard ArcGIS symbol to a basic symbol that can be used by a representation rule object to represent features in a representation class.
Marker placements
BasicMarkerSymbol is used to draw marker symbols and has marker, size, and angle as its graphic attributes. These properties can be managed using the IGraphicAttributes interface. The attributes are listed in the esriGraphicAttribute enumeration and are prefixed with esriGAMarker, such as esriGAMarkerSize. All BasicMarkerSymbol classes implement the IBasicMarkerSymbol interface, which has a single property, MarkerPlacement, on it.
A MarkerPlacement class is a marker placement style for placing markers. You can place either single or multiple markers depending on what MarkerPlacement you choose. For example, MarkerPlacementOnPoint places a single marker over a point, while MarkerPlacementAlongLine places multiple markers along a line.
The default marker placement for any basic marker symbol is OnPoint. Use the IMarkerPlacement interface to create and manipulate the properties of placement styles. The esriMarkerPlacementAttributes enumeration lists graphic attributes for all marker placements where each attribute is prefixed with esriGA(name)(attribute), such as esriGAInsidePolygonGridAngle, where InsidePolygon is the marker placement style and GridAngle is its graphic attribute. See the following code example:
[C#] IBasicMarkerSymbol pBasMarker;
IGraphicAttributes pGraphicAttributes;
pBasMarker=new BasicMarkerSymbolClass();
pGraphicAttributes=pBasMarker;
pGraphicAttributes.Value(1)=CreateMarker();
pGraphicAttributes.Value(2)=5;
pGraphicAttributes.Value(3)=30;
[VB.NET] Dim pBasMarker As IBasicMarkerSymbol
Dim pGraphicAttributes As IGraphicAttributes
pBasMarker=New BasicMarkerSymbolClass
pGraphicAttributes=pBasMarker
'Assign attributes.
pGraphicAttributes.Value(1)=CreateMarker() 'Define marker symbol.
pGraphicAttributes.Value(2)=5 'Define size of marker.
pGraphicAttributes.Value(3)=30 'Define angle of marker.
[C#] public IRepresentationMarker CreateMarker()
{
IRepresentationMarker pMarker;
IGeometry pGeom;
ISegmentCollection pSegCol;
IEnvelope pEnvelope;
IFillPattern pFillPattern;
IRgbColor pColor;
IGraphicAttributes pGA;
IRepresentationRule pRR;
IBasicFillSymbol pBasicFill;
IRepresentationGraphics pGraphics;
pMarker=new RepresentationMarker();
pGraphics=pMarker;
pGeom=new Polygon();
pSegCol=pGeom;
pEnvelope=new Envelope();
pEnvelope.PutCoords( - 0.5, - 0.5, 0.5, 0.5);
pSegCol.SetRectangle pEnvelope;
pFillPattern=new SolidColorPattern();
pColor=new RgbColor();
pColor.Red=0;
pColor.Green=0;
pColor.Blue=250;
pGA=pFillPattern;
pGA.Value(0)=pColor; //Define color.
pBasicFill=new BasicFillSymbol();
pBasicFill.FillPattern=pFillPattern;
pRR=new RepresentationRule();
pRR.InsertLayer(0, pBasicFill);
pGraphics.Add pGeom, pRR; //Add graphics to marker.
return pMarker;
}
[VB.NET] Public Function CreateMarker() As IRepresentationMarker
Dim pMarker As IRepresentationMarker
Dim pGeom As IGeometry
Dim pSegCol As ISegmentCollection
Dim pEnvelope As IEnvelope
Dim pFillPattern As IFillPattern
Dim pColor As IRgbColor
Dim pGA As IGraphicAttributes
Dim pRR As IRepresentationRule
Dim pBasicFill As IBasicFillSymbol
Dim pGraphics As IRepresentationGraphics
pMarker=New RepresentationMarker
pGraphics=pMarker
pGeom=New Polygon
pSegCol=pGeom
pEnvelope=New Envelope
pEnvelope.PutCoords( -0.5, -0.5, 0.5, 0.5)
Dim pEnvelope As pSegCol.SetRectangle
pFillPattern=New SolidColorPattern
pColor=New RgbColor
pColor.Red=0
pColor.Green=0
pColor.Blue=250
pGA=pFillPattern
pGA.Value(0)=pColor
pBasicFill=New BasicFillSymbol
pBasicFill.FillPattern=pFillPattern
pRR=New RepresentationRule
pRR.InsertLayer(0, pBasicFill)
Dim pGeom As pGraphics.Add
Dim pRR As pGraphics.Add
Return pMarker
End Function
BasicLineSymbol is used to draw stroke symbols. All BasicLineSymbol classes implement the IBasicLineSymbol interface, which has a single property, Stroke. LineStroke has width, caps, joins, and color for its graphic attributes. These attributes can be manipulated using the IGraphicAttributes interface. Use the ILineStroke interface to create and manipulate the properties of a new stroke symbol such as esriGraphicAttributeesriGAStroke.
BasicFillSymbol is used to draw fill symbols. All BasicFillSymbol classes implement the IBasicFillSymbol interface, which has a single property, FillPattern. There are three types of fill patterns: GradientPattern, LinePattern, and SolidColorPattern.
Graphic attributes of fill pattern classes
The following table shows the graphic attributes of each of these fill pattern classes:
Fill pattern class |
Graphic attributes |
GradientPattern |
Algorithm
Angle
Color 1
Color 2
Intervals
Style
Percentage |
LinePattern |
Angle
Color
Offset
Step
Width |
SolidColorPattern |
Color |
These attributes can be manipulated using the IGraphicAttributes interface. The attributes are listed in the esriGraphicAttribute enumeration and are prefixed with esriGA (fill pattern type), for example, esriGASolidColorPatternColor. Use the IFillPattern interface to create and manipulate the properties of a new fill pattern symbol.
GraphicAttributes are attributes used to define graphic properties for all MarkerPlacements, GeometricEffects, BasicMarkerSymbol, LineStroke, GradientPattern, LinePattern, and SolidColorPattern objects. A RepresentationClass also has a single graphic attribute for controlling its visibility property. All graphic attributes are enumerated into esriGraphicAttributes, esriGeometricEffectAttributes, and esriMarkerPlacementAttributes enumerations.
You must implement IMarkerPlacement, IGraphicAttributes, and IPersistVariant interfaces to create custom MarkerPlacements and IGeometricEffect, IGraphicAttributes, and IPersistVariant interfaces to create custom GeometricEffects.
Feature representations and overrides
Each feature in a feature class representation will be associated with a feature representation that is a cartographic depiction of the geographic feature. Use the GetRepresentation method on the IRepresentationClass interface to reference feature representations with respect to various map contexts.
Representations can be displayed using information from any of the following options:
- RepresentationRule stored in the RuleID field.
- RepresentationRule along with override information stored in the Override field.
- RepresentationGraphics, also known as free representation. The value of RuleID is - 1 and the entire graphic is written into the Override field. So a free representation can be considered an override.
Use the IRepresentation interface to manage the properties of a feature representation such as creating or modifying its shape overrides. Use the IOverride interface to manage the attribute overrides present for a feature representation. This interface cannot be used to set new attribute overrides. To set new attribute overrides, use the IRepresentation.Value property with the correct set of GraphicAttributes and the index of the attribute you want to alter.
Creating feature class representations
Creating feature class representations on a feature class results in the addition of two new fields: RuleID (fieldtype long to store RepresentationRule ID value) and Override (fieldtype BLOB to store feature-specific override information). A reference to a new or existing RepresentationRules object, which is a collection of rules used to represent features, must be present to create a new representation class. These representation rules are managed at the metadata level.
Creating a new feature class or modifying representation rules of an existing representation class requires an exclusive schema lock. As a result, for ArcSDE databases, only the owner of the database can create new feature class representations or modify rules of existing representation classes.
Deleting a representation class results in the deletion of the RuleID and Override fields except when the feature class is in a DB2 ArcSDE geodatabase.
See Also:
Samples:Development licensing | Deployment licensing |
---|---|
ArcGIS Desktop Basic | ArcGIS Desktop Basic |
ArcGIS Desktop Standard | ArcGIS Desktop Standard |
ArcGIS Desktop Advanced | ArcGIS Desktop Advanced |