This document is archived and information here might be outdated.  Recommended version.

Working with vertex attributes (ArcObjects .NET 10.8 SDK)
ArcObjects Help for .NET developers > ArcObjects Help for .NET developers > Developing with ArcGIS > Learning ArcObjects > Managing data > Working with geometry > Working with curves, segments, and vertices > Working with vertex attributes

Working with vertex attributes

About working with vertex attributes

Each vertex of a geometry, in addition to its x,y coordinates, can optionally have additional attributes, or vertex attributes.
The z-vertex attribute is a double-precision value that can be used to represent heights or depths relative to a vertical coordinate system. The m-vertex attribute, or measure, is a double-precision value that can be used to establish a linear reference system on a geometry (usually a polyline), such as exits along a highway. The ID vertex attribute, or point ID, is a signed integer that can be used as a foreign database key to associate additional information with each vertex such as survey measurements.
The ID attribute is a numeric label but does not serve any computational purpose. Vertex attributes can be added to, or removed from, any geometry at any time and in any combination. For example, a polyline can start with no vertex attributes, have Zs added to it, have IDs added to it, then have its Zs removed.
When a geometry is aware of its vertex attributes, those attributes are persisted as part of the geometry and included in the output of topological operations that involve that geometry. If a geometry is not aware of its attributes, those attributes are ignored when the geometry is persisted, and the attributes do not appear in the output of a topological operation involving that geometry. The attribute awareness of a geometry is controlled by the IZAware, IMAware, or IPointIDAware interface. The attribute values are not actually removed from a geometry if its awareness is disabled.
See the following code example:
IPoint pnt=new PointClass()as IPoint;
pnt.PutCoords(1, 1);
IZAware zAware=pnt as IZAware;
Dim pnt As IPoint=CType(New PointClass, IPoint)
pnt.PutCoords(1, 1)
Dim zAware As IZAware=CType(pnt, IZAware)