com.esri.arcgis.geodatabase
Class TinNode

java.lang.Object
  extended by com.esri.arcgis.geodatabase.TinNode
All Implemented Interfaces:
ITinElement, ITinFeatureSeed, ITinNode, ITinNode2, com.esri.arcgis.interop.RemoteObjRef, ISupportErrorInfo, Serializable

public class TinNode
extends Object
implements com.esri.arcgis.interop.RemoteObjRef, ITinElement, ITinNode, ITinNode2, ITinFeatureSeed, ISupportErrorInfo

The ESRI TinNode component.

Description

The TinNode object is one of the three basic elements of a TIN: nodes, edges, and triangles. Triangles are comprised of three nodes and edges. Nodes and edges are ordered around triangles in a clockwise direction.

Nodes store x,y,z and optionally tag values. A tag is a long integer that has user assigned meaning.

When a TIN is first created it's populated with four supernodes connected into 2 triangles. The placement of the supernodes is far outside the declared data envelope (see ITinEdit.InitNew ). The initial triangulation formed by these nodes is used as the foundation for incrementally adding more data. Supernodes are assigned the VoidZ value. Most other nodes in a TIN are derived from input points or vertices of polylines and polygon boundaries. These are original, user input, data. Breakline enforcement may require the software to add densification, or Steiner , nodes. These are used to maintain line or polygon boundaries while simultaneously honoring Delaunay criteria.

ITinNodeInfo is used to determine a node's lineage; whether it's a supernode, an original node, or densification node. Since TINs don't store all node source information once a TIN is saved to disk some of this information is lost. Supernodes can always be differentiated from regular nodes, even after a TIN is saved, by testing their Z's against the VoidZ value.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

See Also:
Serialized Form

Constructor Summary
TinNode()
          Constructs a TinNode using ArcGIS Engine.
TinNode(Object obj)
          Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
TinNode theTinNode = (TinNode) obj;
 
Method Summary
 boolean equals(Object o)
          Compare this object with another
 int esri_getSource()
          The source of the node.
 ITinNodeArray getAdjacentNodes()
          Returns all nodes comprising triangles sharing the specified node.
static String getClsid()
          getClsid.
 int getDegree(boolean bEnforcedEdgesOnly)
          The degree of the node.
 ITinEdgeArray getIncidentEdges()
          Returns all edges sharing the specified node.
 ITinTriangleArray getIncidentTriangles()
          Returns all triangles sharing the specified node.
 int getIndex()
          The element's index number.
 int getTagValue()
          The tag value of the specified element.
 ITin getTheTin()
          Indicates if the specified element is uninitialized.
 IPolygon getVoronoiRegion(IPolygon pClippingPolygon)
          Returns the Voronoi-polygon region of the specified node.
 double getX()
          The x-coordinate of the specified node.
 double getY()
          The y-coordinate of the specified node.
 double getZ()
          The z-coordinate of the specified node.
 int hashCode()
          the hashcode for this object
 ITinTriangle incidentTriangle()
          Returns any triangle having the node as one of it's vertices.
 int incidentTriangleIndex()
          Returns any triangle having the node as one of it's vertices.
 void init(ITin pTin, int index)
          Initializes a new TIN element.
 void interfaceSupportsErrorInfo(GUID riid)
          interfaceSupportsErrorInfo
 boolean isEmpty()
          Indicates if the specified element is uninitialized.
 boolean isInsideDataArea()
          Indicates if the specified element is within the interpolation zone of the TIN.
 boolean isOnDomainBoundary()
          Indicates if the specified node is on domain's boundary.
 boolean isUseTagValue()
          Indicates whether tag value (if true) or edge type (if false) should be used to define the feature, in case the seed is an edge.
 void queryAdjacentNodeIndices(ILongArray pNodes)
          Returns all nodes connecting to the node.
 void queryAsPoint(IPoint pPoint)
          Sets the node equal to a point.
 void queryAsWKSPointZ(_WKSPointZ[] pPoint)
          Sets the node equal to a point with a z value.
 void queryIncidentEdgeIndices(ILongArray pEdges)
          Returns all edges sharing the node.
 void queryIncidentTriangleIndices(ILongArray pTriangles)
          Returns all triangles sharing the node.
 void setEmpty()
          Uninitializes the element.
 void setUseTagValue(boolean pbUseTagValue)
          Indicates whether tag value (if true) or edge type (if false) should be used to define the feature, in case the seed is an edge.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef
getJintegraDispatch, release
 

Constructor Detail

TinNode

public TinNode()
        throws IOException,
               UnknownHostException
Constructs a TinNode using ArcGIS Engine.

Throws:
IOException - if there are interop problems
UnknownHostException - if there are interop problems

TinNode

public TinNode(Object obj)
        throws IOException
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
TinNode theTinNode = (TinNode) obj;

Construct a TinNode using a reference to such an object returned from ArcGIS Engine or Server. This is semantically equivalent to casting obj to TinNode.

Parameters:
obj - an object returned from ArcGIS Engine or Server
Throws:
IOException - if there are interop problems
Method Detail

getClsid

public static String getClsid()
getClsid.


equals

public boolean equals(Object o)
Compare this object with another

Overrides:
equals in class Object

hashCode

public int hashCode()
the hashcode for this object

Overrides:
hashCode in class Object

isEmpty

public boolean isEmpty()
                throws IOException,
                       AutomationException
Indicates if the specified element is uninitialized.

Description

Indicates whether or not the element has been set with values.

When an element is instantiated using 'New' IsEmpty will return True.

When using QueryNext on one of the element enumerators, the end of the set is indicated by IsEmpty returning True.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
isEmpty in interface ITinElement
Returns:
The pbIsEmpty
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getTheTin

public ITin getTheTin()
               throws IOException,
                      AutomationException
Indicates if the specified element is uninitialized.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getTheTin in interface ITinElement
Returns:
A reference to a com.esri.arcgis.geodatabase.ITin
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getIndex

public int getIndex()
             throws IOException,
                    AutomationException
The element's index number.

Description

Returns the index number of the element. TINs are composed of 1..n node, edge, and triangle elements. The base index number for TIN elements is 1.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getIndex in interface ITinElement
Specified by:
getIndex in interface ITinFeatureSeed
Returns:
The pIndex
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getTagValue

public int getTagValue()
                throws IOException,
                       AutomationException
The tag value of the specified element.

Description

A tag value is a 32-bit long integer. Presently, only nodes and triangles support tags. Support for edge tags is anticipated in a future release. Tag values can be set to whatever the user wishes and their interpretation is left up to the user. Examples include accuracy codes on nodes or land cover codes on triangles.

A TIN layer has support to symbolize itself through the use of tag values.

The Identify tool used in ArcMap and ArcScene will report tag values.

The default tag value is 0.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getTagValue in interface ITinElement
Specified by:
getTagValue in interface ITinFeatureSeed
Returns:
The pValue
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setEmpty

public void setEmpty()
              throws IOException,
                     AutomationException
Uninitializes the element.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
setEmpty in interface ITinElement
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

init

public void init(ITin pTin,
                 int index)
          throws IOException,
                 AutomationException
Initializes a new TIN element.

Description

After instantiating a new TIN element you can initialize its properties with Init. The input arguments include a TIN object and an index number. The base index number for nodes, edges, and triangles is 1.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
init in interface ITinElement
Parameters:
pTin - A reference to a com.esri.arcgis.geodatabase.ITin (in)
index - The index (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isInsideDataArea

public boolean isInsideDataArea()
                         throws IOException,
                                AutomationException
Indicates if the specified element is within the interpolation zone of the TIN.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
isInsideDataArea in interface ITinElement
Returns:
The pbIsInside
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getX

public double getX()
            throws IOException,
                   AutomationException
The x-coordinate of the specified node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getX in interface ITinNode
Returns:
The x
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getY

public double getY()
            throws IOException,
                   AutomationException
The y-coordinate of the specified node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getY in interface ITinNode
Returns:
The y
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getZ

public double getZ()
            throws IOException,
                   AutomationException
The z-coordinate of the specified node.

Description

The super nodes of a TIN have a Z value equal to NODATA. Mathmatical operations cannot be performed on NODATA. You can check this case by passing the Z to ITinAdvanced.IsVoidZ, ISurface.IsVoidZ, or ITinSurface.IsVoidZ for evaluation.

A super node is one of four nodes added by the software when a TIN is initially created (ITinEdit.InitNew). They reside far outside the declared data extent and are used to define an initial triangulation before user data gets added. Triangles incident to these nodes are always flagged as being outside the TIN's interpolation zone or data area.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getZ in interface ITinNode
Returns:
The z
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryAsPoint

public void queryAsPoint(IPoint pPoint)
                  throws IOException,
                         AutomationException
Sets the node equal to a point.

Description

Writes the X, Y, and Z values of the node to an existing, pre-instantiated, Point object. In some cases, such as in loops, it's faster to reuse and write to an existing Point object rather than to create a new one each iteration.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryAsPoint in interface ITinNode
Parameters:
pPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryAsWKSPointZ

public void queryAsWKSPointZ(_WKSPointZ[] pPoint)
                      throws IOException,
                             AutomationException
Sets the node equal to a point with a z value.

Description

Writes the X, Y, and Z values of the node to a WKSPointZ variable.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryAsWKSPointZ in interface ITinNode
Parameters:
pPoint - A Structure: com.esri.arcgis.system._WKSPointZ (A com.esri.arcgis.system._WKSPointZ COM typedef) (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getAdjacentNodes

public ITinNodeArray getAdjacentNodes()
                               throws IOException,
                                      AutomationException
Returns all nodes comprising triangles sharing the specified node.

Description

Returns a TinNodeArray containing nodes that are next to the given node. These adjacent nodes are connected to the given node by TIN edges.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getAdjacentNodes in interface ITinNode
Returns:
A reference to a com.esri.arcgis.geodatabase.ITinNodeArray
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getIncidentEdges

public ITinEdgeArray getIncidentEdges()
                               throws IOException,
                                      AutomationException
Returns all edges sharing the specified node.

Description

The edges returned in the TinEdgeArray all share this node as their from node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getIncidentEdges in interface ITinNode
Returns:
A reference to a com.esri.arcgis.geodatabase.ITinEdgeArray
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getIncidentTriangles

public ITinTriangleArray getIncidentTriangles()
                                       throws IOException,
                                              AutomationException
Returns all triangles sharing the specified node.

Description

The returned TinTriangleArray will contain the set of triangles that are incident to, or surround, the given node. In other words, this node belongs to, and is referenced by, every triangle returned.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getIncidentTriangles in interface ITinNode
Returns:
A reference to a com.esri.arcgis.geodatabase.ITinTriangleArray
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getVoronoiRegion

public IPolygon getVoronoiRegion(IPolygon pClippingPolygon)
                          throws IOException,
                                 AutomationException
Returns the Voronoi-polygon region of the specified node.

Description

The Voronoi region (also known as Thiessen or proximal polygon) that is returned encloses an area that is closer to the source node than to any other node in the triangulation.

'Nothing' (a null pointer) can be passed as the clip polygon. In this case, a default rectangle will be used to clip the voronoi region. The rectangle is set to be somewhat larger than the FullExtent of the TIN.

GetVoronoiRegion used on a super node will return Nothing (a null pointer). Super nodes are added by the software when the TIN is initially created and reside far outside the declared data extent.

If you wish to process the entire TIN and write the output to a feature class consider ITinNodeCollection.ConvertToVoronoiRegions.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
getVoronoiRegion in interface ITinNode
Parameters:
pClippingPolygon - A reference to a com.esri.arcgis.geometry.IPolygon (in)
Returns:
A reference to a com.esri.arcgis.geometry.IPolygon
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

esri_getSource

public int esri_getSource()
                   throws IOException,
                          AutomationException
The source of the node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
esri_getSource in interface ITinNode2
Returns:
A com.esri.arcgis.geodatabase.esriTinNodeSourceType constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getDegree

public int getDegree(boolean bEnforcedEdgesOnly)
              throws IOException,
                     AutomationException
The degree of the node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Specified by:
getDegree in interface ITinNode2
Parameters:
bEnforcedEdgesOnly - The bEnforcedEdgesOnly (in)
Returns:
The pDegree
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isOnDomainBoundary

public boolean isOnDomainBoundary()
                           throws IOException,
                                  AutomationException
Indicates if the specified node is on domain's boundary.

Description

The TIN's domain is the same thing as its interpolation zone. IsOnDomainBoundary returns TRUE if the node is on this boundary, separating data from nodata areas.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
isOnDomainBoundary in interface ITinNode2
Returns:
The pbIsOn
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryAdjacentNodeIndices

public void queryAdjacentNodeIndices(ILongArray pNodes)
                              throws IOException,
                                     AutomationException
Returns all nodes connecting to the node.

Description

Returns indices for nodes adjacent to the given node. These are its direct neighbors which are connected by triangle edges.

The passed object that implements ILongArray must have already been instantiated.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryAdjacentNodeIndices in interface ITinNode2
Parameters:
pNodes - A reference to a com.esri.arcgis.system.ILongArray (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryIncidentEdgeIndices

public void queryIncidentEdgeIndices(ILongArray pEdges)
                              throws IOException,
                                     AutomationException
Returns all edges sharing the node.

Description

This populates a LongArray with the indices of edges that surround the 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.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryIncidentEdgeIndices in interface ITinNode2
Parameters:
pEdges - A reference to a com.esri.arcgis.system.ILongArray (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryIncidentTriangleIndices

public void queryIncidentTriangleIndices(ILongArray pTriangles)
                                  throws IOException,
                                         AutomationException
Returns all triangles sharing the node.

Description

Returns indices for triangles incident to the node.

The passed object that implements ILongArray must have already been instantiated.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
queryIncidentTriangleIndices in interface ITinNode2
Parameters:
pTriangles - A reference to a com.esri.arcgis.system.ILongArray (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

incidentTriangle

public ITinTriangle incidentTriangle()
                              throws IOException,
                                     AutomationException
Returns any triangle having the node as one of it's vertices.

Description

Returns one of the triangles that is incident to the node. There is no fixed rule to determine which triangle it will be. You are just assured it will be one that is defined, in part, by the node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
incidentTriangle in interface ITinNode2
Returns:
A reference to a com.esri.arcgis.geodatabase.ITinTriangle
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

incidentTriangleIndex

public int incidentTriangleIndex()
                          throws IOException,
                                 AutomationException
Returns any triangle having the node as one of it's vertices.

Description

Returns the index for one of the triangles incident to the node. There is no fixed rule to determine which triangle it will be. You are just assured it will be one that is defined, in part, by the node.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
incidentTriangleIndex in interface ITinNode2
Returns:
The pTriangle
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isUseTagValue

public boolean isUseTagValue()
                      throws IOException,
                             AutomationException
Indicates whether tag value (if true) or edge type (if false) should be used to define the feature, in case the seed is an edge.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
isUseTagValue in interface ITinFeatureSeed
Returns:
The pbUseTagValue
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setUseTagValue

public void setUseTagValue(boolean pbUseTagValue)
                    throws IOException,
                           AutomationException
Indicates whether tag value (if true) or edge type (if false) should be used to define the feature, in case the seed is an edge.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
setUseTagValue in interface ITinFeatureSeed
Parameters:
pbUseTagValue - The pbUseTagValue (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interfaceSupportsErrorInfo

public void interfaceSupportsErrorInfo(GUID riid)
                                throws IOException,
                                       AutomationException
interfaceSupportsErrorInfo

Description

Indicates whether the interface supports IErrorInfo.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Supported Platforms

Windows, Solaris, Linux

Specified by:
interfaceSupportsErrorInfo in interface ISupportErrorInfo
Parameters:
riid - A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.