Provides access to methods that control TIN 'features'.
Members
Name | Description | |
---|---|---|
AddPointZ | Adds a 3D point to the TIN. pSeed can be NULL or Nothing. | |
AddPolygon | Adds polygon. pSeed can be NULL or Nothing. | |
AddPolygonZ | Adds Z-aware polygon. pSeed can be NULL or Nothing. | |
AddPolyline | Adds polyline. pSeed can be NULL or Nothing. | |
AddPolylineZ | Adds Z-aware polyline. pSeed can be NULL or Nothing. | |
AddPolyObjects | Adds polygons/polylines. | |
CanAdd | Checks if the specified shape can be added without creating spatial conflict. | |
CanAddVertex | Checks if a new polygon/polyline vertex can be added without creating spatial conflict. | |
CanDeleteVertex | Checks if a polygon/polyline vertex can be deleted without creating spatial conflict. | |
CanDisplace | Checks if the embedded object can be moved (continuously) to a new location without creating spatial conflict. | |
CanMove | Checks if the embedded object can be relocated to a new location without creating spatial conflict. | |
CanMoveVertex | Checks if a polygon/polyline vertex can be moved to a new location without creating spatial conflict. | |
CanReplace | Checks if the embedded object can be replaced by the new shape without creating spatial conflict. | |
CanRotate | Checks if the embedded polyline/polygon can be rotated without creating spatial conflict. pOrigin can be NULL or Nothing. | |
CanScalePolygon | Checks if the embedded polygon can be expanded or shrinked without creating spatial conflict. pOrigin can be NULL or Nothing. | |
ClusterPoints | Finds a cluster of nodes, each node in the group has at least one neighbor, to which the distance is smaller, or equal to, the specified value. | |
ConvertToPolygons | Converts qualified triangles to a polygon feature class. | |
ConvertToPolylines | Converts qualified edges to a polyline feature class. | |
Delete | Deletes the embedded point/polygon/polyline represented by the specified seed. | |
DeleteVertex | Deletes the specified vertex from an embedded polygon/polyline. | |
ElementsIgnoredInConflictTest | The TIN nodes or edges to be ignored in conflict detection (used by processes such as CanAdd and CanMove). | |
ExtractPolygon | Extracts polygon. | |
ExtractPolyline | Extracts polyline. The seed must be a special edge, or an edge with tagValue. | |
IsInMemoryEditMode | Indicates if the specified TIN is in in-memory-edit mode. | |
IsNodeShared | Returns TRUE if specified node is shared by more than two enforced edges. | |
Merge | Merges two embedded polygons sharing the specified common edge. | |
Move | Moves the embedded point/polygon/polyline represented by the specified seed. | |
MoveVertex | Moves the specified vertex of an embedded polygon/polyline to a new location. | |
QueryAdjacentVertices | Queries the first two non-densified nodes of a line segment represented by the specified edge). | |
RefreshTagValues | Refresh cached TIN tag values. | |
RemoveIslands | Removes islands whose area is smaller than the specified value, from the embedded polygon represented by the specified seed. Remove all holes if the value is zero. | |
Rotate | Rotates the embedded polygon/polyline represented by the specified seed. pOrigin can be NULL or Nothing. | |
ScalePolygon | Expands or shrinks the embedded polygon represented by the specified seed. pOrigin can be NULL or Nothing. | |
SetToConstrainedDelaunay | Apply constrained Delaunay from now on. | |
StartInMemoryEditing | Initiates memory edit mode. Use ITinEdit::SaveAs to persist. Don't use Save. | |
StopAtEnforcedEdge | Indicates if a polygon related process (e.g., ExtractPolygon) should stop when reach an enforced edge. | |
StopAtJuncture | Indicates if a polyline related process (e.g., ExtractPolyline) should stop at juncture. |
ITinFeatureEdit.AddPointZ Method
Adds a 3D point to the TIN. pSeed can be NULL or Nothing.
Public Sub AddPointZ ( _
ByVal pPoint As IPoint, _
ByVal TagValue As Integer, _
ByVal pSeed As ITinNode _
)
public void AddPointZ (
IPoint pPoint,
int TagValue,
ITinNode pSeed
);
Description
The point is the 3D point to be added.
The TagValue is a signed long integer that will be assigned to the resulting node. A zero can be used to ignore node tag value assignment.
The Seed is a TinNode pointer. If you're interested in obtaining a reference to the added node then have the seed point to a TinNode object. The object will then be populated with the appropriate properties. If you're not interested in obtaining a seed then pass a NULL pointer ('Nothing' in VisualBasic).
ITinFeatureEdit.AddPolygon Method
Adds polygon. pSeed can be NULL or Nothing.
Public Sub AddPolygon ( _
ByVal pShape As IPolygon, _
ByVal Type As esriTinEdgeType, _
ByVal TagValue As Integer, _
ByVal edgeTagValue As Integer, _
ByVal NodeTagValue As Integer, _
ByVal pSeed As ITinTriangle, _
[ByRef pZ As Object] _
)
public void AddPolygon (
IPolygon pShape,
esriTinEdgeType Type,
int TagValue,
int edgeTagValue,
int NodeTagValue,
ITinTriangle pSeed,
ref object pZ
);
Description
The Shape, a 2D polygon object, represents the input geometry to be added.
The Type indicates how the resulting edges of the embedded polygon will be coded. Supported edge types are esriTinHardEdge, esriTinRegularEdge, and esriTinSoftEdge.
The TagValue is a signed, non-zero, long integer that will be assigned to the triangles inside the embedded polygon.
The edgeTagValue is a signed long integer that will be assigned to the embedded polygon edges. A zero can be used to ignore edge tag value assignment.
The NodeTagValue is a signed long integer that will be assigned to the embedded polygon nodes. A zero can be used to ignore node tag value assignment.
The Seed is a TinTriangle pointer. If you're interested in obtaining a seed that can be used as a handle to the added polygon then have the seed point to a TinTriangle object. The object will then be populated with the appropriate properties. If you're not interested in obtaining a seed then pass a NULL pointer ('Nothing' in VisualBasic).
The optional Z can be used to define a constant height to be used for the added polygon. If unspecified, heights will be interpolated off the existing surface.
ITinFeatureEdit.AddPolygonZ Method
Adds Z-aware polygon. pSeed can be NULL or Nothing.
Public Sub AddPolygonZ ( _
ByVal pShape As IPolygon, _
ByVal Type As esriTinEdgeType, _
ByVal TagValue As Integer, _
ByVal edgeTagValue As Integer, _
ByVal NodeTagValue As Integer, _
ByVal pSeed As ITinTriangle _
)
public void AddPolygonZ (
IPolygon pShape,
esriTinEdgeType Type,
int TagValue,
int edgeTagValue,
int NodeTagValue,
ITinTriangle pSeed
);
Description
The Shape, a 3D polygon object, represents the input geometry to be added.
The Type indicates how the resulting edges of the embedded polygon will be coded. Supported edge types are esriTinHardEdge, esriTinRegularEdge, and esriTinSoftEdge.
The TagValue is a signed, non-zero, long integer that will be assigned to the triangles inside the embedded polygon.
The edgeTagValue is a signed long integer that will be assigned to the embedded polygon edges. A zero can be used to ignore edge tag value assignment.
The NodeTagValue is a signed long integer that will be assigned to the embedded polygon nodes. A zero can be used to ignore node tag value assignment.
The Seed is a TinTriangle pointer. If you're interested in obtaining a seed that can be used as a handle to the added polygon then have the seed point to a TinTriangle object. The object will then be populated with the appropriate properties. If you're not interested in obtaining a seed then pass a NULL pointer ('Nothing' in VisualBasic).
ITinFeatureEdit.AddPolyline Method
Adds polyline. pSeed can be NULL or Nothing.
Public Sub AddPolyline ( _
ByVal pShape As IPolyline, _
ByVal Type As esriTinEdgeType, _
ByVal TagValue As Integer, _
ByVal NodeTagValue As Integer, _
ByVal pSeed As ITinEdge, _
[ByRef pZ As Object] _
)
public void AddPolyline (
IPolyline pShape,
esriTinEdgeType Type,
int TagValue,
int NodeTagValue,
ITinEdge pSeed,
ref object pZ
);
Description
The Shape, a 2D polyline object, represents the input geometry to be added.
The Type indicates how the resulting edges of the embedded polyline will be coded. Supported edge types are esriTinHardEdge, esriTinRegularEdge, and esriTinSoftEdge.
The TagValue is a signed, non-zero, long integer that will be assigned to the embedded polyline edges.
The NodeTagValue is a signed long integer that will be assigned to the embedded polyline nodes. A zero can be used to ignore node tag value assignment.
The Seed is TinEdge pointer. If you're interested in obtaining a seed that can be used as a handle to the added polyline then have the seed point to a TinEdge object. The object will then be populated with the appropriate properties. If you're not interested in obtaining a seed then pass a NULL pointer ('Nothing' in VisualBasic).
The optional Z can be used to define a constant height to be used for the added polyline. If unspecified, heights will be interpolated off the existing surface.
ITinFeatureEdit.AddPolylineZ Method
Adds Z-aware polyline. pSeed can be NULL or Nothing.
Public Sub AddPolylineZ ( _
ByVal pShape As IPolyline, _
ByVal Type As esriTinEdgeType, _
ByVal TagValue As Integer, _
ByVal NodeTagValue As Integer, _
ByVal pSeed As ITinEdge _
)
public void AddPolylineZ (
IPolyline pShape,
esriTinEdgeType Type,
int TagValue,
int NodeTagValue,
ITinEdge pSeed
);
Description
The Shape, a 3D polyline object, represents the input geometry to be added.
The Type indicates how the resulting edges of the embedded polyline will be coded. Supported edge types are esriTinHardEdge, esriTinRegularEdge, and esriTinSoftEdge.
The TagValue is a signed, non-zero, long integer that will be assigned to the embedded polyline edges.
The NodeTagValue is a signed long integer that will be assigned to the embedded polyline nodes. A zero can be used to ignore node tag value assignment.
The Seed is TinEdge pointer. If you're interested in obtaining a seed that can be used as a handle to the added polyline then have the seed point to a TinEdge object. The object will then be populated with the appropriate properties. If you're not interested in obtaining a seed then pass a NULL pointer ('Nothing' in VisualBasic).
ITinFeatureEdit.AddPolyObjects Method
Adds polygons/polylines.
Public Sub AddPolyObjects ( _
ByVal pFeatureClass As IFeatureClass, _
ByVal pFilter As IQueryFilter, _
ByVal pHeightField As IField, _
ByVal pValueField As IField, _
ByVal bSetEdgeTagValue As Boolean, _
ByVal bSetNodeTagValue As Boolean, _
ByVal Type As esriTinEdgeType _
)
public void AddPolyObjects (
IFeatureClass pFeatureClass,
IQueryFilter pFilter,
IField pHeightField,
IField pValueField,
bool bSetEdgeTagValue,
bool bSetNodeTagValue,
esriTinEdgeType Type
);
ITinFeatureEdit.CanAdd Method
Checks if the specified shape can be added without creating spatial conflict.
Public Function CanAdd ( _
ByVal pShape As IGeometry, _
ByVal spacing As Double _
) As Boolean
public bool CanAdd (
IGeometry pShape,
double spacing
);
ITinFeatureEdit.CanAddVertex Method
Checks if a new polygon/polyline vertex can be added without creating spatial conflict.
Public Function CanAddVertex ( _
ByVal pPoly As IGeometry, _
ByVal pNewPoint As IPoint, _
ByVal bClose As Boolean, _
ByVal spacing As Double _
) As Boolean
public bool CanAddVertex (
IGeometry pPoly,
IPoint pNewPoint,
bool bClose,
double spacing
);
Description
This member is used primarily for conflict detection when using the TIN as a data structure to record point, line, and polygon features.
Returns TRUE if the passed point can be added as a vertex to the passed polygon/polyline without creating a conflict. The geometry isn't actually added to the TIN. It's treated as 'proposed' geometry. Presumably, code would use this member to ensure there is no conflict before proceeding.
The input poly object can be a polygon or polyline. It may have zero or more vertices already present.
The passed point is treated as if it were to be added at the end of the geometry's point collection.
A conflict results if any TIN features are within the specified spacing of the proposed geometry. This includes segment and edge distance checking as well as vertex and node checking.
The ITinFeatureEdit.ElementsIgnoredInConflictTest setting determines what, if any, TIN elements are excluded from the conflict test.
The Close argument is ignored if the input poly object is a polyline.
ITinFeatureEdit.CanDeleteVertex Method
Checks if a polygon/polyline vertex can be deleted without creating spatial conflict.
Public Function CanDeleteVertex ( _
ByVal pNode As ITinNode, _
ByVal pSeed As ITinFeatureSeed, _
ByVal spacing As Double _
) As Boolean
public bool CanDeleteVertex (
ITinNode pNode,
ITinFeatureSeed pSeed,
double spacing
);
Description
Determines if the vertex (node) of a TIN feature can be removed without creating a conflict.
The TIN feature is defined by the passed seed. If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The vertex (node) to be deleted is specified as an input argument. It must be a vertex belonging to the TIN feature defined by the input seed.
A conflict results if any TIN features are within the specified spacing of the proposed geometry. This includes distance to feature edges as well as nodes.
A conflict also results of the feature would self-intersect as a result of the removal.
Nodes with a source type of esriTinDensified are excluded from the geometry of the TIN feature that's under consideration. See ITinNode2.Source or ITinAdvanced2.GetNodeSource.
The ITinFeatureEdit.ElementsIgnoredInConflictTest setting determines what, if any, TIN elements are excluded from the conflict test.
ITinFeatureEdit.CanDisplace Method
Checks if the embedded object can be moved (continuously) to a new location without creating spatial conflict.
Public Function CanDisplace ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal dx As Double, _
ByVal dy As Double, _
ByVal spacing As Double _
) As Boolean
public bool CanDisplace (
ITinFeatureSeed pSeed,
double dx,
double dy,
double spacing
);
ITinFeatureEdit.CanMove Method
Checks if the embedded object can be relocated to a new location without creating spatial conflict.
Public Function CanMove ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal dx As Double, _
ByVal dy As Double, _
ByVal spacing As Double _
) As Boolean
public bool CanMove (
ITinFeatureSeed pSeed,
double dx,
double dy,
double spacing
);
ITinFeatureEdit.CanMoveVertex Method
Checks if a polygon/polyline vertex can be moved to a new location without creating spatial conflict.
Public Function CanMoveVertex ( _
ByVal pNode As ITinNode, _
ByVal pSeed As ITinFeatureSeed, _
ByRef pNewLocation As WKSPoint, _
ByVal spacing As Double _
) As Boolean
public bool CanMoveVertex (
ITinNode pNode,
ITinFeatureSeed pSeed,
ref WKSPoint pNewLocation,
ref double spacing
);
Description
Determines if the vertex (node) of a TIN feature can be moved without creating a conflict.
The TIN feature is defined by the passed seed. If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The vertex (node) to be moved is specified as an input argument. It must be a vertex belonging to the TIN feature defined by the input seed.
A conflict results if any TIN features are within the specified spacing of the proposed geometry. This includes distance to feature edges as well as nodes.
A conflict also results of the feature would self-intersect as a result of the move.
Nodes with a source type of esriTinDensified are excluded from the geometry of the TIN feature that's under consideration. See ITinNode2.Source or ITinAdvanced2.GetNodeSource.
The ITinFeatureEdit.ElementsIgnoredInConflictTest setting determines what, if any, TIN elements are excluded from the conflict test.
ITinFeatureEdit.CanReplace Method
Checks if the embedded object can be replaced by the new shape without creating spatial conflict.
Public Function CanReplace ( _
ByVal pShape As IGeometry, _
ByVal pSeed As ITinFeatureSeed, _
ByVal spacing As Double _
) As Boolean
public bool CanReplace (
IGeometry pShape,
ITinFeatureSeed pSeed,
double spacing
);
Description
Returns TRUE if the embedded TIN feature represented by the passed seed can be replaced with the proposed shape without creating a spatial conflict between it and another TIN feature.
The shape can be a point, polyline, or polygon.
The seed is a TIN node, edge, or triangle that is used to reference an existing TIN feature.
The spacing is used as a search distance around the proposed shape. If another TIN feature is within this distance a conflict exists.
See also ITinFeatureEdit::ElementsIgnoredInConflictTest.
ITinFeatureEdit.CanRotate Method
Checks if the embedded polyline/polygon can be rotated without creating spatial conflict. pOrigin can be NULL or Nothing.
Public Function CanRotate ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal pOrigin As IPoint, _
ByVal Angle As Double, _
ByVal spacing As Double _
) As Boolean
public bool CanRotate (
ITinFeatureSeed pSeed,
IPoint pOrigin,
double Angle,
double spacing
);
Description
Determines if the TIN feature can be rotated without creating a conflict.
The TIN feature is defined by the passed seed . If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The TIN feature is rotated relative to the specified origin point.
The rotation angle is given in degrees. Positive values rotate clockwise, negative values counter-clockwise.
A conflict results if any TIN features are within the specified spacing of the proposed geometry. This includes distance to feature edges as well as nodes.
The ITinFeatureEdit.ElementsIgnoredInConflictTest setting determines what, if any, TIN elements are excluded from the conflict test.
ITinFeatureEdit.CanScalePolygon Method
Checks if the embedded polygon can be expanded or shrinked without creating spatial conflict. pOrigin can be NULL or Nothing.
Public Function CanScalePolygon ( _
ByVal pSeed As ITinTriangle, _
ByVal pOrigin As IPoint, _
ByVal Scale As Double, _
ByVal spacing As Double _
) As Boolean
public bool CanScalePolygon (
ITinTriangle pSeed,
IPoint pOrigin,
double Scale,
double spacing
);
Description
Determines if the TIN polygon can be scaled without creating a conflict.
The TIN polygon is defined by the passed seed which is a triangle inside the polygon. The polygon's area is represented by the set of contiguous triangles with the same tag value as the seed.
The TIN polygon is scaled in reference to the specified origin point. Regardless of the location of the origin, the geometry resulting from the transformation is the same except for a positional offset. The origin is the only point in the transformation guaranteed to remain in the same location after the transformation is complete. A Null pointer ('Nothing' in VB) can be passed in which case the polygon's centroid will be used.
The scale is the ratio of old size to new - used for both x and y dimensions. Values greater than 1 increase the polygon's size. Values less than 1 decrease it.
A conflict results if any TIN features are within the specified spacing of the proposed geometry. This includes distance to feature edges as well as nodes.
The ITinFeatureEdit.ElementsIgnoredInConflictTest setting determines what, if any, TIN elements are excluded from the conflict test.
ITinFeatureEdit.ClusterPoints Method
Finds a cluster of nodes, each node in the group has at least one neighbor, to which the distance is smaller, or equal to, the specified value.
Public Function ClusterPoints ( _
ByVal pSeed As ITinNode, _
ByVal spacing As Double, _
ByVal pFilter As ITinFilter _
) As IEnumTinNode
public IEnumTinNode ClusterPoints (
ITinNode pSeed,
double spacing,
ITinFilter pFilter
);
Description
Returns a node enumerator which represents the set wherein all members have at least one neighboring node that passes through the filter (optional) and is less than, or equal to, the spacing distance away from another in the set. The search for the set starts with the seed node and expands outward.
Use of a filter is optional. A NULL pointer (or 'Nothing' in VB) can be used to skip it. When used, the filter must be a type supported by nodes. Examples include TinValueFilter and TinNodeSourceFilter.
The clustering works in an iterative fashion. First, all nodes connected by triangle edges to the seed node are evaluated. Those that are within the specified distance, and satisfy the filter (if used), are included in the set. The operation is then repeated on the nodes just added. This continues until no more nodes are found.
ITinFeatureEdit.ConvertToPolygons Method
Converts qualified triangles to a polygon feature class.
Public Sub ConvertToPolygons ( _
ByVal pFeatureClass As IFeatureClass, _
ByVal pFilter As ITinDynamicFilter, _
ByVal bStopAtEnforcedEdge As Boolean, _
ByVal bSkipDensifiedNodes As Boolean, _
[ByRef pFieldName As Object] _
)
public void ConvertToPolygons (
IFeatureClass pFeatureClass,
ITinDynamicFilter pFilter,
bool bStopAtEnforcedEdge,
bool bSkipDensifiedNodes,
ref object pFieldName
);
Description
Extracts embedded TIN polygons and writes them out to the specified feature class.
The specified feature class must exist and be polygon based.
If the feature class is Z enabled the polygons written to it will be 3D (the boundary vertices will have Z's), otherwise they will be 2D.
The specified filter must support triangles and implement ITinDynamicFilter. For example, you can use a TinTriangleFilter to extract areas of like slope or aspect or a TinValueFilter to extract areas based on triangle tag values. If the ActiveBound for either of these filters is set to esriTinUniqueValue it means contiguous triangles with identical values will be extracted as polygons - for all unique values (with the exception of zero if ITinValueFilter2.ZeroTagValueExcluded is set to TRUE).
The option to stop at enforced edges means that breakline edges act as polygon barriers/boundaries. For example, a set of contiguous triangles tagged with the code to represent 'building footprint' will be output as two polygons if a breakline separates them. This way, two adjacent buildings can remain distinct from one another.
The option to skip densification nodes is for excluding points added by the triangulator to breaklines in order to make them Delaunay conforming. This option works fully on TINs made using ArcGIS version 10.0 and later. For earlier TINs, it only works with edits (i.e., addition of densification nodes) made in memory since the node source information is not persisted with those TINs and the information is lost once they are saved to disk.
A field will be added to the feature class and is used to store a numeric code for the output features. In the case of edge type, a value of 1 is used for soft breaklines and 2 for hard. The added field will be called 'Value' or 'Code' (depending on filter) unless you provide a different name via the optional field name argument.
Do not have WorkspaceEdit turned on as this member needs to add fields to the output feature class, a schema edit operation that WorkspaceEdit does not permit.
ITinFeatureEdit.ConvertToPolylines Method
Converts qualified edges to a polyline feature class.
Public Sub ConvertToPolylines ( _
ByVal pFeatureClass As IFeatureClass, _
ByVal pFilter As ITinDynamicFilter, _
ByVal bSkipDensifiedNodes As Boolean, _
[ByRef pFieldName As Object] _
)
public void ConvertToPolylines (
IFeatureClass pFeatureClass,
ITinDynamicFilter pFilter,
bool bSkipDensifiedNodes,
ref object pFieldName
);
Description
Extracts embedded TIN polylines and writes them out to the specified feature class.
The specified feature class must exist and be polyline based.
If the feature class is Z enabled the polylines written to it will be 3D, otherwise they will be 2D.
The specified filter must be edge based (e.g. TinEdgeTypeFilter) and implement ITinDynamicFilter. You can use ITinEdgeTypeFilter2 with its RegularEdgesExcluded property set to TRUE to extract hard and soft breaklines as polyline features.
The option to skip densification nodes is for excluding points added by the triangulator to breaklines in order to make them Delaunay conforming. This option works fully on TINs made using ArcGIS version 10.0 and later. For earlier TINs, it only works with edits (i.e., addition of densification nodes) made in memory since the node source information is not persisted with those TINs and the information is lost once they are saved to disk.
A field will be added to the feature class and is used to store a numeric code for the output features. In the case of edge type, a value of 1 is used for soft breaklines and 2 for hard. The added field will be called 'Code' unless you provide a different name via the optional field name argument.
Do not have WorkspaceEdit turned on as this member needs to add fields to the output feature class, a schema edit operation that WorkspaceEdit does not permit.
ITinFeatureEdit.Delete Method
Deletes the embedded point/polygon/polyline represented by the specified seed.
Public Sub Delete ( _
ByVal pSeed As ITinFeatureSeed _
)
public void Delete (
ITinFeatureSeed pSeed
);
Description
Removes the point, polyline, or polygon feature from the TIN by deleting its vertices (nodes) from the triangulation. Only when a feature's vertices are shared with another feature are they maintained in order to preserve the definition of the other feature's geometry.
The TIN feature is defined by the passed seed . If the seed is a node the feature is a point. If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The TIN must be in edit mode. See ITinEdit.StartEditing and ITinFeatureEdit.StartInMemoryEditing
ITinFeatureEdit.DeleteVertex Method
Deletes the specified vertex from an embedded polygon/polyline.
Public Sub DeleteVertex ( _
ByVal pNode As ITinNode, _
ByVal pSeed As ITinFeatureSeed _
)
public void DeleteVertex (
ITinNode pNode,
ITinFeatureSeed pSeed
);
Description
Deletes the specified vertex (node) of TIN polyline or polygon feature.
The TIN feature is defined by the passed seed. If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The vertex (node) to be deleted is specified as an input argument. It must be a vertex belonging to the TIN feature defined by the input seed.
The seed will be modified, if necessary, to properly reference the edited feature.
The TIN must be in edit mode. See ITinEdit.StartEditing and ITinFeatureEdit.StartInMemoryEditing.
ITinFeatureEdit.ElementsIgnoredInConflictTest Property
The TIN nodes or edges to be ignored in conflict detection (used by processes such as CanAdd and CanMove).
Public Property ElementsIgnoredInConflictTest As Integer
public int ElementsIgnoredInConflictTest {get; set;}
Description
Indicates what nodes, if any, to ignore when evaluating potential conflicts. The evaluators are the ITinFeatureEdit.Can* methods such as CanMove and CanRotate.
The value is based on the esriTinIgnoredElementType enumeration. The options are:esriTinNodesWithNonZeroTag esriTinNodesWithZeroTag esriTinNothing
The parameter is defined as a Long so in the future if other options are added they can be combined using the '+' operator. For example:
esriTinNodesWithZeroTag + esriTinEdgesWithNonZeroTag
ITinFeatureEdit.ExtractPolygon Method
Extracts polygon.
Public Function ExtractPolygon ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal bGetZ As Boolean, _
ByVal bSkipDensifiedNodes As Boolean _
) As IPolygon
public IPolygon ExtractPolygon (
ITinFeatureSeed pSeed,
bool bGetZ,
bool bSkipDensifiedNodes
);
Description
Takes a polygon embedded in the triangulation and returns it as polygon geometry.
The Seed is either a TIN triangle that is inside the polygon or a TIN edge that is on the polygon boundary. When triangle seeds are used, their tag values define the polygons. By default, edge seeds also rely on tags. Only non-zero tags are supported. Edge type can be used as a substitute for tags when using edge based seeds. To do this set ITinFeatureSeed.UseTagValue on the edge to FALSE.
If the option to GetZ is TRUE the returned polygon will be ZAware with vertex Z values set from the source nodes.
If node source information is available, the setting of SkipDensifiedNodes to TRUE will result in the exclusion of densification nodes as vertices in the resulting polygon.
The TIN polygon must be bounded by enforced edges. An error will result if this condition is not met.
The returned polygon will not be topologically simple. If you need to persist the polygon or use it for topological operations call ITopologicalOperator.Simplify first.
ITinFeatureEdit.ExtractPolyline Method
Extracts polyline. The seed must be a special edge, or an edge with tagValue.
Public Function ExtractPolyline ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal bGetZ As Boolean, _
ByVal bSkipDensifiedNodes As Boolean _
) As IPolyline
public IPolyline ExtractPolyline (
ITinFeatureSeed pSeed,
bool bGetZ,
bool bSkipDensifiedNodes
);
Description
Takes a polyline embedded in the triangulation and returns a polyline geometry.
The seed must be a TIN edge and either be enforced or have an assigned tag value.
ITinFeatureSeed.UseTagValue is used to control whether edge tag values are used to define the polyline. The default value is TRUE. If set to FALSE, only the edge type (i.e. hard, soft) is considered.
If the option to GetZ is TRUE the returned polyline will be ZAware with vertex Z values set from the source nodes.
If node source information is available, the setting of SkipDensifiedNodes to TRUE will result in the exclusion of densification nodes as vertices in the resulting polyline. This will result in the loss of the first and/or last polyline segment when first or last vertex of the polyline is a densification node. If the application requires these densification nodes to remain, and only the others to be excluded, consider use of ITinAdvanced.ExtractPolyline. The resulting TinPolyline object provides control on a per-node basis.
ITinFeatureEdit.IsInMemoryEditMode Property
Indicates if the specified TIN is in in-memory-edit mode.
Public ReadOnly Property IsInMemoryEditMode As Boolean
public bool IsInMemoryEditMode {get;}
ITinFeatureEdit.IsNodeShared Method
Returns TRUE if specified node is shared by more than two enforced edges.
Public Function IsNodeShared ( _
ByVal pNode As ITinNode _
) As Boolean
public bool IsNodeShared (
ITinNode pNode
);
Description
Returns TRUE if three or more edges incident to the passed node are enforced as hard or soft edges.
When a node is shared it belongs to two or more linear features (enforced breaklines and polygon boundaries).
ITinFeatureEdit.Merge Method
Merges two embedded polygons sharing the specified common edge.
Public Sub Merge ( _
ByVal pCommonEdge As ITinEdge, _
ByVal newValue As Integer, _
ByVal bKeepCommonNodes As Boolean _
)
public void Merge (
ITinEdge pCommonEdge,
int newValue,
bool bKeepCommonNodes
);
Description
Merges two adjacent TIN polygon features by unenforcing their shared edges and assigning one tag value to all constituent triangles.
The passed edge should separate the two polygons in question.
The new value is the tag that will be assigned to all constituent triangles of the resulting merged polygon.
When choosing to keep the common nodes the node structure of the TIN remains unchanged. The only things modified are edge enforcement and triangle tag values. Otherwise, the nodes, and edges associated with them, will be deleted.
The TIN must be in edit mode. See ITinEdit.StartEditing or ITinFeatureEdit.StartInMemoryEditing.
ITinFeatureEdit.Move Method
Moves the embedded point/polygon/polyline represented by the specified seed.
Public Sub Move ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal dx As Double, _
ByVal dy As Double, _
ByVal bGetNewZ As Boolean _
)
public void Move (
ITinFeatureSeed pSeed,
double dx,
double dy,
bool bGetNewZ
);
Description
Moves the specified TIN polyline or polygon feature.
The TIN feature is defined by the passed seed. If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The seed will be modified, if necessary, to properly reference the moved feature.
The new position of the TIN feature is defined by adding dx and dy to each vertex.
The GetNewZ argument, if set to TRUE, means the feature is removed, heights are interpolated for its new position from the surface (this may add vertices to capture surface detail), then it is added back in.
The TIN must be in edit mode. See ITinEdit.StartEditing and ITinFeatureEdit.StartInMemoryEditing.
ITinFeatureEdit.MoveVertex Method
Moves the specified vertex of an embedded polygon/polyline to a new location.
Public Sub MoveVertex ( _
ByVal pNode As ITinNode, _
ByVal pSeed As ITinFeatureSeed, _
ByRef pNewLocation As WKSPoint, _
ByVal bGetNewZ As Boolean _
)
public void MoveVertex (
ITinNode pNode,
ITinFeatureSeed pSeed,
ref WKSPoint pNewLocation,
ref bool bGetNewZ
);
Description
Moves the specified vertex (node) of a TIN polyline or polygon feature.
The TIN feature is defined by the passed seed. If the seed is a triangle the feature is a polygon whose area is represented by the set of contiguous triangles with the same tag value. If the seed is an edge the feature is a polyline comprised of all unambiguously connected edges with the same tag value or edge type. The ITinFeatureSeed.UseTagValue property is used to determine whether the edge seed is defined by its tag or edge type.
The vertex (node) to be deleted is specified as an input argument. It must be a vertex belonging to the TIN feature defined by the input seed.
The seed will be modified, if necessary, to properly reference the edited feature.
The TIN must be in edit mode. See ITinEdit.StartEditing and ITinFeatureEdit.StartInMemoryEditing.
ITinFeatureEdit.QueryAdjacentVertices Method
Queries the first two non-densified nodes of a line segment represented by the specified edge).
Public Sub QueryAdjacentVertices ( _
ByVal pSeedEdge As ITinFeatureSeed, _
ByVal pBehind As ITinNode, _
ByVal pFront As ITinNode _
)
public void QueryAdjacentVertices (
ITinFeatureSeed pSeedEdge,
ITinNode pBehind,
ITinNode pFront
);
ITinFeatureEdit.RefreshTagValues Method
Refresh cached TIN tag values.
Public Sub RefreshTagValues ( _
)
public void RefreshTagValues (
);
Description
For performance reasons complete tag statistics are not maintained while editing a TIN. Methods that use or report these statistics may return outdated results while the TIN is in edit mode. These include:
ITinAdvanced.GetUniqueTagValues
ITinAdvanced.UniqueTagValueCount
ITinAdvanced2.GetCountedUniqueTagValues
To ensure correct results you must either save the edited TIN to disk, which is relatively expensive and may be undesirable for other reasons, or call RefreshTagValues.
ITinFeatureEdit.RemoveIslands Method
Removes islands whose area is smaller than the specified value, from the embedded polygon represented by the specified seed. Remove all holes if the value is zero.
Public Sub RemoveIslands ( _
ByVal pSeed As ITinTriangle, _
ByVal Area As Double, _
ByVal bKeepNodes As Boolean, _
ByVal bZeroTag As Boolean _
)
public void RemoveIslands (
ITinTriangle pSeed,
double Area,
bool bKeepNodes,
bool bZeroTag
);
ITinFeatureEdit.Rotate Method
Rotates the embedded polygon/polyline represented by the specified seed. pOrigin can be NULL or Nothing.
Public Sub Rotate ( _
ByVal pSeed As ITinFeatureSeed, _
ByVal pOrigin As IPoint, _
ByVal Angle As Double, _
ByVal bGetNewZ As Boolean _
)
public void Rotate (
ITinFeatureSeed pSeed,
IPoint pOrigin,
double Angle,
bool bGetNewZ
);
ITinFeatureEdit.ScalePolygon Method
Expands or shrinks the embedded polygon represented by the specified seed. pOrigin can be NULL or Nothing.
Public Sub ScalePolygon ( _
ByVal pSeed As ITinTriangle, _
ByVal pOrigin As IPoint, _
ByVal Scale As Double, _
ByVal bGetNewZ As Boolean _
)
public void ScalePolygon (
ITinTriangle pSeed,
IPoint pOrigin,
double Scale,
bool bGetNewZ
);
Description
The TIN polygon is defined by the passed seed which is a triangle inside the polygon. The polygon's area is represented by the set of contiguous triangles with the same tag value as the seed.
The TIN polygon is scaled in reference to the specified origin point. Regardless of the location of the origin, the geometry resulting from the transformation is the same except for a positional offset. The origin is the only point in the transformation guaranteed to remain in the same location after the transformation is complete. A Null pointer ('Nothing' in VB) can be passed in which case the polygon's centroid will be used.
The scale is the ratio of old size to new - used for both x and y dimensions. Values greater than 1 increase the polygon's size. Values less than 1 decrease it.
The GetNewZ argument, if set to TRUE, means the feature is removed, heights are interpolated for its new position from the surface (this may add vertices to capture surface detail), then it is added back in.
The TIN must be in edit mode. See ITinEdit.StartEditing and ITinFeatureEdit.StartInMemoryEditing.
ITinFeatureEdit.SetToConstrainedDelaunay Method
Apply constrained Delaunay from now on.
Public Sub SetToConstrainedDelaunay ( _
)
public void SetToConstrainedDelaunay (
);
ITinFeatureEdit.StartInMemoryEditing Method
Initiates memory edit mode. Use ITinEdit::SaveAs to persist. Don't use Save.
Public Function StartInMemoryEditing ( _
) As Boolean
public bool StartInMemoryEditing (
);
Description
In-memory editing allows you to edit a TIN, whether or not it's read-only, with the assurance that edits can't be saved back to the source dataset on disk.
In-memory editing is useful for two things. First, to edit read-only TINs that ITinEdit.StartEditing does not permit. Secondly, to make temporary edits for analysis that will be discarded when the analysis is complete.
While in memory edit mode ITinEdit.SaveAs can be used to save edits to a new dataset whereas ITinEdit.Save will fail. If ITinEdit.SaveAs is called the TIN is automatically switched over into regular edit mode.
ITinFeatureEdit.StopAtEnforcedEdge Property
Indicates if a polygon related process (e.g., ExtractPolygon) should stop when reach an enforced edge.
Public Property StopAtEnforcedEdge As Boolean
public bool StopAtEnforcedEdge {get; set;}
ITinFeatureEdit.StopAtJuncture Property
Indicates if a polyline related process (e.g., ExtractPolyline) should stop at juncture.
Public Property StopAtJuncture As Boolean
public bool StopAtJuncture {get; set;}
Classes that implement ITinFeatureEdit
Classes | Description |
---|---|
Tin | The Esri TIN component. |