

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
public interface ITinAdvanced2
Provides access to advanced TIN functions.
Method Summary  

void 
convertToPolylines(IFeatureClass pFeatureClass,
ITinDynamicFilter pFilter,
Object pFieldName)
Converts qualified edges to a polyline feature class. 
int 
findTriangleIndex(IPoint pPoint)
The triangle at the specified location. 
void 
getCountedUniqueTagValues(int type,
ILongArray[] ppValues,
ILongArray[] ppCounts)
Returns unique tag values with counts for the specified element type. 
int 
getLeftTriangleIndex(int edgeIndex)
Gets left triangle of the specified edge. 
double 
getNaturalNeighborZ(double x,
double y)
Return the zcoordinate of the specified location using Natural Neighbor interpolation. 
int 
getNeighborEdgeIndex(int edgeIndex)
Gets neighbor edge. 
int 
getNodeDegree(int nodeIndex,
boolean bEnforcedEdgesOnly)
Returns the degree of the specified node. 
int 
getNodeSource(int nodeIndex)
Returns the source of the specified node. 
void 
getNodeSourceCounts(int[] pcOriginal,
int[] pcSuper,
int[] pcDensified,
int[] pcIntersection,
int[] pcUnknown)
Returns the number of nodes with respect to different sources. 
int 
getRightTriangleIndex(int edgeIndex)
Gets right triangle of the specified edge. 
void 
getSpecialEdgeCounts(int[] pcHardDataEdges,
int[] pcSoftDataEdges,
int[] pcTagValueDataEdges)
Returns the total number of special edges in the TIN. 
boolean 
hasEdgeType(int type)
Returns TRUE if the TIN contains the specified edge type. 
boolean 
isEdgeInsideDataArea(int edgeIndex)
Returns TRUE if the edge is inside data area. 
boolean 
isNodeInsideDataArea(int nodeIndex)
Returns TRUE if the node is inside data area. 
boolean 
isNodeOnDomainBoundary(int nodeIndex)
Returns TRUE if the specified node is on domain's boundary. 
boolean 
isTriangleInsideDataArea(int triangleIndex)
Returns TRUE if the triangle is inside data area. 
void 
queryAllEdgeIndicesAroundNode(int nodeIndex,
ILongArray pEdges)
Returns all edges connected to the specified node. 
void 
queryBeginEndNodeIndices(int edgeIndex,
int[] pBegin,
int[] pEnd)
Gets begin and end nodes of the specified edge. 
void 
queryEdgeIndicesAroundNode(int nodeIndex,
ILongArray pEdges)
Returns all edges having the specified node as begin node. 
void 
queryElementAsGeometry(int type,
int index,
IGeometry pGeometry)
Output the specified TIN element as Geometry object. 
void 
queryNaturalNeighborIndices(IPoint pPoint,
ILongArray pNodes)
Returns all Natural Neighbors corresponding to the query point. 
void 
queryNeighborsAndWeights(double x,
double y,
ILongArray pNeighbors,
IDoubleArray pWeights)
Returns natural neighbors and their weights corresponding to the query point. 
void 
queryNodeIndicesAroundNode(int nodeIndex,
ILongArray pNodes)
Returns all nodes connected to the specified node. 
void 
queryTriangleEdgeIndices(int triangleIndex,
int[] pA,
int[] pB,
int[] pC)
Gets the three edges of the specified triangle (clockwise). 
void 
queryTriangleIndicesAroundNode(int nodeIndex,
ILongArray pTriangles)
Returns all triangles sharing the specified node. 
void 
queryTriangleNeighborhoodIndices(IPoint pPoint,
ILongArray pTriangles)
Returns all triangles whose circumscribed circle contains the query point. 
void 
queryTriangleNodeIndices(int triangleIndex,
int[] pA,
int[] pB,
int[] pC)
Gets the three nodes of the specified triangle (clockwise). 
Methods inherited from interface com.esri.arcgis.geodatabase.ITin 

getDataEdgeCount, getDataNodeCount, getDataTriangleCount, getExtent, getFields, getVersion, getZFactor, isDelaunay, isEmpty, isHasEdgeTagValues, isHasNodeTagValues, isHasTriangleTagValues, saveAs, setZFactor 
Method Detail 

int getNodeSource(int nodeIndex) throws IOException, AutomationException
The source of the specified node is returned as an esriTinNodeSourceType enumeration. This gives an indication of where the node came from; its origin. If a node has the value esriTinOriginal it was input, as a point or vertex, by a user. All other node source types, with the possible exception of esriTinUnknown, represent those which are software generated. These others include the four super nodes that are added upon initial TIN creation, and densification and intersection nodes added to breaklines. Nodes are added to breaklines, where necessary, in order to make them Delaunay conforming.
If the intersection point between two or more breaklines was input as part of the source data the node source will be set to esriTinOriginal because the software did not need to generate the intersection point. If you need to discover nodes where breaklines intersect, regardless of whether they were software generated, use ITinAdvanced2.GetNodeDegree or ITinNode2.Degree with the EnforcedEdgesOnly option set to TRUE. Returned values greater than two are intersection points. A value of two might be considered an intersection but only if the node is the endpoint of two different breaklines.
TINs do not yet persist node source information. It is only maintained while the TIN is is edit mode. This means after a TIN has been saved to disk, all nodes, except for super nodes, become unknown.
See also: ITinNode2.Source
nodeIndex
 The nodeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.ITinNode2
void getNodeSourceCounts(int[] pcOriginal, int[] pcSuper, int[] pcDensified, int[] pcIntersection, int[] pcUnknown) throws IOException, AutomationException
Returns the total number of nodes in the TIN for each source type. The different types include original, densified, intersection, supernode, and unknown.
TINs do not yet persist node source information. It is only maintained while the TIN is is edit mode. This means after a TIN has been saved to disk, all nodes, except for super nodes, become unknown.
See also: ITinAdvanced2.GetNodeSource, ITinNode2.Source
pcOriginal
 The pcOriginal (out: use single element array)pcSuper
 The pcSuper (out: use single element array)pcDensified
 The pcDensified (out: use single element array)pcIntersection
 The pcIntersection (out: use single element array)pcUnknown
 The pcUnknown (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.int getNodeDegree(int nodeIndex, boolean bEnforcedEdgesOnly) throws IOException, AutomationException
GetNodeDegree returns the number of edges incident to the node. If bEnforcedEdgesOnly is set to True then only the number of hard and soft break edges are counted.
This member uses the SingleEdge interpretation where only one edge between node pairs is considered.
nodeIndex
 The nodeIndex (in)bEnforcedEdgesOnly
 The bEnforcedEdgesOnly (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.boolean isNodeOnDomainBoundary(int nodeIndex) throws IOException, AutomationException
Returns TRUE if the node resides on the perimeter of the TIN's interpolation zone. This is the case if there's at least one nodata triangle and one data triangle incident to the node.
nodeIndex
 The nodeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void getSpecialEdgeCounts(int[] pcHardDataEdges, int[] pcSoftDataEdges, int[] pcTagValueDataEdges) throws IOException, AutomationException
Returns the number of hard, soft, and tagged edges.
Since edges can be both tagged and hard or soft, some overlap in the counts can exist.
At present, edge tags can only be assigned and used while a TIN's being edited. Edge tags do not get persisted so they are lost when a TIN is saved to disk.
pcHardDataEdges
 The pcHardDataEdges (out: use single element array)pcSoftDataEdges
 The pcSoftDataEdges (out: use single element array)pcTagValueDataEdges
 The pcTagValueDataEdges (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.boolean hasEdgeType(int type) throws IOException, AutomationException
HasEdgeType will return True if the specified edge type, esriTinRegularEdge, esriTinHardEdge, or esriTinSoftEdge, is present.
type
 A com.esri.arcgis.geodatabase.esriTinEdgeType constant (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.int getLeftTriangleIndex(int edgeIndex) throws IOException, AutomationException
Returns the index of the triangle on the left side of the specified edge. Note that edges of triangles are ordered clockwise.
If the edge is on the extreme perimeter of the TIN, the returned index will equal 0, meaning no triangle, as the base index for triangles is 1.
edgeIndex
 The edgeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.int getRightTriangleIndex(int edgeIndex) throws IOException, AutomationException
Returns the index of the triangle on the right side of the specified edge. Note that edges of triangles are ordered clockwise.
edgeIndex
 The edgeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryBeginEndNodeIndices(int edgeIndex, int[] pBegin, int[] pEnd) throws IOException, AutomationException
Returns the indices of the from and to nodes of the specified edge.
Note that edges in a triangle are ordered clockwise.
edgeIndex
 The edgeIndex (in)pBegin
 The pBegin (out: use single element array)pEnd
 The pEnd (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.int getNeighborEdgeIndex(int edgeIndex) throws IOException, AutomationException
Returns the index of the corresponding edge in the adjacent triangle.
Zero is returned if the given edge is on the extreme perimeter of the TIN with no adjacent triangle.
edgeIndex
 The edgeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryTriangleNodeIndices(int triangleIndex, int[] pA, int[] pB, int[] pC) throws IOException, AutomationException
Returns the indices of the three nodes that comprise the specified triangle.
triangleIndex
 The triangleIndex (in)pA
 The pA (out: use single element array)pB
 The pB (out: use single element array)pC
 The pC (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryTriangleEdgeIndices(int triangleIndex, int[] pA, int[] pB, int[] pC) throws IOException, AutomationException
Returns the indices of the three edges that comprise the specified triangle.
They are returned from smaller index to larger in clockwise order.
triangleIndex
 The triangleIndex (in)pA
 The pA (out: use single element array)pB
 The pB (out: use single element array)pC
 The pC (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryNodeIndicesAroundNode(int nodeIndex, ILongArray pNodes) throws IOException, AutomationException
Returns indices for nodes adjacent to specified node. These are its direct neighbors which are connected by triangle edges.
The passed object that implements ILongArray must have already been instantiated.
nodeIndex
 The nodeIndex (in)pNodes
 A reference to a com.esri.arcgis.system.ILongArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryEdgeIndicesAroundNode(int nodeIndex, ILongArray pEdges) throws IOException, AutomationException
This populates a LongArray with the indices of edges that surround a given node.
The passed LongArray must already have been instantiated.
A single edge interpretation is used. This is where edges between adjacent triangles are shared.
Only edges that have their from node in common with the specified node are returned. Because of this, some boundary edges incident to super nodes will have no representation.
nodeIndex
 The nodeIndex (in)pEdges
 A reference to a com.esri.arcgis.system.ILongArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryAllEdgeIndicesAroundNode(int nodeIndex, ILongArray pEdges) throws IOException, AutomationException
This populates a LongArray with the indices of edges that surround a given node.
The passed LongArray must already have been instantiated.
A Single Edge interpretation is used. This is where edges between adjacent triangles are shared.
For nonsuper nodes, all returned edges have their from node in common with the specified node. In the special case of a super node, the last returned edge will have its to node in common. That returned index will also be flagged using a negative value.
nodeIndex
 The nodeIndex (in)pEdges
 A reference to a com.esri.arcgis.system.ILongArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryTriangleIndicesAroundNode(int nodeIndex, ILongArray pTriangles) throws IOException, AutomationException
Returns indices for triangles incident to the specified node.
The passed object that implements ILongArray must have already been instantiated.
nodeIndex
 The nodeIndex (in)pTriangles
 A reference to a com.esri.arcgis.system.ILongArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryNaturalNeighborIndices(IPoint pPoint, ILongArray pNodes) throws IOException, AutomationException
Returns the indices of the nodes that are natural neighbors of the query point. This set represents those the point would connect to if inserted into the triangulation.
If the query point is coincident with an existing node, that nodes neighbors will be returned.
An empty set is returned if the query point falls outside the triangulation.
The passed LongArray must already be instantiated.
The TIN must be Delaunay.
pPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)pNodes
 A reference to a com.esri.arcgis.system.ILongArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryTriangleNeighborhoodIndices(IPoint pPoint, ILongArray pTriangles) throws IOException, AutomationException
Returns the indices of all triangles that would be effected if the query point were inserted in the triangulation. These are the triangles whose circumscribed circles contain the query point.
No special attention is paid to the presence of breaklines or whether the query point falls inside the interpolation zone. Triangles connected to super nodes may be included in the returned set.
An empty set will be returned if the query point resides entirely outside the triangulation (including the super node extent).
The passed object that implements ILongArray must have already been instantiated.
pPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)pTriangles
 A reference to a com.esri.arcgis.system.ILongArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryElementAsGeometry(int type, int index, IGeometry pGeometry) throws IOException, AutomationException
Returns the specified TIN element as the type of geometry object that's passed.
The passed geometry object must already be instantiated.
Node elements can be returned as points.
Edge elements can be returned as multipoints, lines, paths, and polylines.
Triangle elements can be returned as multipoints, paths, rings, polylines, and polygons.
type
 A com.esri.arcgis.geodatabase.esriTinElementType constant (in)index
 The index (in)pGeometry
 A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void queryNeighborsAndWeights(double x, double y, ILongArray pNeighbors, IDoubleArray pWeights) throws IOException, AutomationException
Returns the natural neighbor indices and their normalized weights for the given query point. The weights are based on areastealing, or Sibson, interpolation. There is a one to one correspondence between the index and weight entries placed in the two arrays.
For valid results the TIN should have been constructed using only mass points. It must be Delaunay and have a convex interpolation zone. Breaklines are not taken into consideration.
If the query point is incident to a node only that node's index will be returned along with a weight of 1.0.
Zero neighbors will be reported if a query point falls outside the TIN's interpolation zone.
If a super node is discovered to be a neighbor it will be excluded from consideration. It will not be reported as a neighbor or be included in determining weights.
Both objects implementing the array functionality must be instantiated before being used with this member.
x
 The x (in)y
 The y (in)pNeighbors
 A reference to a com.esri.arcgis.system.ILongArray (in)pWeights
 A reference to a com.esri.arcgis.system.IDoubleArray (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.int findTriangleIndex(IPoint pPoint) throws IOException, AutomationException
Returns the index of the triangle that encompasses the point.
If the point falls completely outside the TIN, including the area represented by its super nodes, the returned index will be 0.
pPoint
 A reference to a com.esri.arcgis.geometry.IPoint (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.boolean isTriangleInsideDataArea(int triangleIndex) throws IOException, AutomationException
Returns TRUE if the triangle is inside the data area. This is the same as the domain or interpolation zone of the TIN.
triangleIndex
 The triangleIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.boolean isEdgeInsideDataArea(int edgeIndex) throws IOException, AutomationException
If the triangle the edge belongs to, its RightTriangle, is inside the TIN's data area then this function will return True for the edge.
edgeIndex
 The edgeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.boolean isNodeInsideDataArea(int nodeIndex) throws IOException, AutomationException
Returns True if any triangles incident to the node are inside the TIN's interpolation zone.
nodeIndex
 The nodeIndex (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void getCountedUniqueTagValues(int type, ILongArray[] ppValues, ILongArray[] ppCounts) throws IOException, AutomationException
Returns an array of integers containing all the tag values used for the given element type  node, edge, or triangle. An additional returned array reports the number of elements that have been assigned a particular tag. The indices of the two arrays correspond with one another. So, the first element of the count array indicates the number of elements that have been assigned the value of the of the first element in the tag value array.
The arrays can potentially be as large as the number of elements. It's a good idea to check how many unique values there are using UniqueTagValueCount before executing this function.
When an edge is assigned a tag the corresponding edge in the adjacent triangle is automatically assigned the same tag. So, even though you only assigned one unique tag to an individual edge the reported element count for that tag will reported as two. The only exception is with super edges where there are no adjacent triangles with corresponding edges.
The returned tag values will be sorted in ascending order if the TIN has been created by, or saved/copied by the 8.1 version of this software or later. The tag values might otherwise not be sorted.
The arrays will be set to Null ('Nothing' in VB) if the TIN has no tags related to the specified element type.
Note as soon as one element is assigned a tag all the other elements of the same type are given the default tag of 0. So, if you only assign a one nonzero tag to one element you will find two values reported by this member, 0 and the value you assigned.
type
 A com.esri.arcgis.geodatabase.esriTinElementType constant (in)ppValues
 A reference to a com.esri.arcgis.system.ILongArray (out: use single element array)ppCounts
 A reference to a com.esri.arcgis.system.ILongArray (out: use single element array)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.double getNaturalNeighborZ(double x, double y) throws IOException, AutomationException
The returned height is based on natural neighbor interpolation. This scheme finds the closest nodes in all directions, the ones that would be connected to if the query point were inserted in the triangulation, and applies an area based weighting scheme to them.
Hard breaklines and the TIN data area boundary constrain the neighbor search. Data on the opposite side of these boundaries, relative to the query point, are excluded from consideration. Therefore, the surface is continuously smooth except across hard breaklines and at the data area boundary. Hard breaklines constitute an abrupt change in slope.
The z value returned when the query point falls outside the interpolation zone is NODATA (or notanumber, NaN). You can determine if this is the case by passing it to ITinAdvanced.IsVoidZ or ISurface.IsVoidZ.
x
 The x (in)y
 The y (in)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.void convertToPolylines(IFeatureClass pFeatureClass, ITinDynamicFilter pFilter, Object pFieldName) throws IOException, AutomationException
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.
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.
pFeatureClass
 A reference to a com.esri.arcgis.geodatabase.IFeatureClass (in)pFilter
 A reference to a com.esri.arcgis.geodatabase.ITinDynamicFilter (in)pFieldName
 A Variant (in, optional, pass null if not required)
IOException
 If there are interop problems.
AutomationException
 If the ArcObject component throws an exception.


PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 