com.esri.arcgis.geodatabase
Interface ITinSurface3

All Superinterfaces:
Serializable
All Known Implementing Classes:
Tin

public interface ITinSurface3
extends Serializable

Provides access to members that control TIN surfaces.

Product Availability

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


Method Summary
 ITin extract(IPolygon pBoundary, int boundaryEdgeType, int boundaryEdgeValue, boolean bConstrainedDelaunay, boolean bAllowEdgeSwapping)
          Extract part of the TIN.
 int getInterpolationMethod()
          The elevation interpolation method.
 double getProfileWeedTolerance()
          The profile weeding tolerance.
 void getVolumeAndArea(IGeometry pAOI, double referenceHeight, int type, boolean[] pbIsOutsideDataArea, Object[] pVolume, Object[] pSurfaceArea, Object[] pProjectedArea)
          Returns TIN's volume/area above or below an input z value.
 double interpolateZ(double x, double y)
          Interpolate the z-coordinate of the specified location.
 void intersect(ITinSurface pReferenceSurface, IGeometry pAOI, IFeatureClass pOutFeatureClass, String volumeFieldName, String surfaceAreaFieldName, String codeFieldName)
          Intersect with a reference TIN.
 void queryLocate(IRay pRay, int hint, IPoint pLocation)
          Returns the first intersection of the query ray and the TIN.
 void queryLocateWithinDistance(IRay pRay, double maxDistance, IGeometry pLocations)
          Returns the intersections of the query ray and the TIN.
 void queryTriangleNormal(int triangle, IVector3D pNormal)
          Returns the vector normal to the specified triangle.
 void setInterpolationMethod(int pType)
          The elevation interpolation method.
 void setProfileWeedTolerance(double pTolerance)
          The profile weeding tolerance.
 

Method Detail

setInterpolationMethod

void setInterpolationMethod(int pType)
                            throws IOException,
                                   AutomationException
The elevation interpolation method.

Product Availability

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

Parameters:
pType - A com.esri.arcgis.geodatabase.esriSurfaceInterpolationType constant (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getInterpolationMethod

int getInterpolationMethod()
                           throws IOException,
                                  AutomationException
The elevation interpolation method.

Description

The method of interpolation used to obtain heights for points, lines, and polygons. The default is linear. Applies to ITinSurface.GetProfile as well as members prefaced by 'Interpolate' in the ITinSurface, ITinSurface2, and ITinSurface3 interfaces.

The value of this property should be saved before, and reset after, calling any of the applicable interpolation functions.

Product Availability

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

Returns:
A com.esri.arcgis.geodatabase.esriSurfaceInterpolationType constant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

interpolateZ

double interpolateZ(double x,
                    double y)
                    throws IOException,
                           AutomationException
Interpolate the z-coordinate of the specified location.

Description

Interpolates a height for the given XY. The method of interpolation used is defined by the ITinSurface3.InterpolationMethod property.

Product Availability

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

Parameters:
x - The x (in)
y - The y (in)
Returns:
The pZ
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getVolumeAndArea

void getVolumeAndArea(IGeometry pAOI,
                      double referenceHeight,
                      int type,
                      boolean[] pbIsOutsideDataArea,
                      Object[] pVolume,
                      Object[] pSurfaceArea,
                      Object[] pProjectedArea)
                      throws IOException,
                             AutomationException
Returns TIN's volume/area above or below an input z value.

Description

Calculates volume, area, and surface area from the TIN. Volume is the cubic area between a reference plane and the TIN. The area values are based on the portions of the TIN which are above or below a reference plane. Surface area is measured along the slope of a surface and is therefore greater than the 2D, projected area.

pAOI is the area of interest. It can be NULL, an envelope, or a polygon. If it's NULL the calculation will be based on the entire data area of the TIN. For envelopes and polygons the calculation is constrained to be inside their extent.

referenceHeight is a double that indicates the height of a horizontal plane from which calculations will be based.

esriReferencePlaneType controls on which side of the reference plane the calculation is made. If you choose to calculate volume above the plane, the cubic area of consideration is that which is above the plane and the underside of the surface. If you choose below the plane the area of consideration is below the plane and the topside of the surface. If you choose to calculate one of the area properties the returned values will be based on the those portions of the TIN which are above or below the reference plane.

pTrackCancel is a reference to a CancelTracker to support progress reporting and the ability to halt the process. To bypass this feature pass a NULL pointer.

pblsOutsideDataArea is an output boolean that will be set to TRUE if pAOI falls outside the horizontal data extent of the TIN. If TRUE the resulting volume and area are really NoData even though they will be set to 0.0. Note, it's possible for those values to be 0.0 when pAOI is inside the TIN and these are valid results. This parameter is used to distinguish between the two cases.

pVolume, pSurfaceArea, and pProjectedArea are output results. These are optional. If you're not interested in one of these parameters don't specify it and time will not be spent in its calculation.

Notes:

The TIN must not be in edit mode when calling this method. An error will be returned if it is.

Product Availability

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

Parameters:
pAOI - A reference to a com.esri.arcgis.geometry.IGeometry (in)
referenceHeight - The referenceHeight (in)
type - A com.esri.arcgis.geodatabase.esriPlaneReferenceType constant (in)
pbIsOutsideDataArea - The pbIsOutsideDataArea (out: use single element array)
pVolume - A Variant (in/out: use single element array, optional, pass single element of null if not required)
pSurfaceArea - A Variant (in/out: use single element array, optional, pass single element of null if not required)
pProjectedArea - A Variant (in/out: use single element array, optional, pass single element of null if not required)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

intersect

void intersect(ITinSurface pReferenceSurface,
               IGeometry pAOI,
               IFeatureClass pOutFeatureClass,
               String volumeFieldName,
               String surfaceAreaFieldName,
               String codeFieldName)
               throws IOException,
                      AutomationException
Intersect with a reference TIN.

Description

Calculates the difference between two TINs. Outputs 2D polygons that divide space based on whether the source surface is above, coincident to, or below the reference surface. Boundaries of the polygons represent where the two surfaces intersect in 3D space. Each polygon is assigned a numeric code to indicate its relation: -1 is assigned to polygons where the source surface is below the reference surface, 0 to polygons where it's coincident, and 1 to polygons where it's above. Volume, area, and surface area are also calculated for each polygon. Volume represents the cubic space between the two surfaces. Area is the planimetric, or projected, area. Surface area takes slope into account and is that of the source surface.

pReferenceSurface is the other TIN being used to compare the source surface against. Above, coincident, and below assessments on the source surface are made relative to the reference surface.

pOutFeatureClass is where output features will be written. It needs to be a 2D polygon feature class.

volumeFieldName is the name of the field where volume is written. The field type should be a double.

surfaceAreaFieldName is the name of the field where surface area is written. The field type should be a double.

codeFieldName is the name of the field where the verical relation code is written.

Notes:
Surfaces must have some overlap in XY extent.

While this method will add fields if they don't already exist it's best to add them first. This gives you the opportunity to place the feature class into LoadOnly mode (if not a shapefile) before calling the method. It's not recommended for anything to be adding fields while in LoadOnly mode.

Both TINs must not be in edit mode when calling this method.

Product Availability

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

Parameters:
pReferenceSurface - A reference to a com.esri.arcgis.geodatabase.ITinSurface (in)
pAOI - A reference to a com.esri.arcgis.geometry.IGeometry (in)
pOutFeatureClass - A reference to a com.esri.arcgis.geodatabase.IFeatureClass (in)
volumeFieldName - The volumeFieldName (in)
surfaceAreaFieldName - The surfaceAreaFieldName (in)
codeFieldName - The codeFieldName (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryTriangleNormal

void queryTriangleNormal(int triangle,
                         IVector3D pNormal)
                         throws IOException,
                                AutomationException
Returns the vector normal to the specified triangle.

Description

Returns the surface normal for the specified triangle. This is a vector orthogonal to the plane of the triangle.

Triangle is the triangle index.

pNormal is a vector whose component properties are to be set. It must be instantiated before calling the method. The magnitude of the result is not normalized, it is relative to the size of the triangle. If you need it normalized call IVector3D.Normalize.

Product Availability

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

Parameters:
triangle - The triangle (in)
pNormal - A reference to a com.esri.arcgis.geometry.IVector3D (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryLocate

void queryLocate(IRay pRay,
                 int hint,
                 IPoint pLocation)
                 throws IOException,
                        AutomationException
Returns the first intersection of the query ray and the TIN.

Description

Returns the intersection point between a ray and the TIN.

pRay is the input 3D ray the calculation will be based on.

hint is the index of the triangle intersected by the ray. If you don't know the triangle provide a -1 for the hint. If you know which triangle is intersected then provide its index and the method will be faster, it won't need to search for it, and will simply intersect the ray with the plane of the specified triangle.

pLocation is the point of intersection. You must provide an instantiated point object. The method will populate its coordinates. If the ray does not intersect the TIN the point will be set empty. Check for this via IGeometry.IsEmpty.

Notes:

Product Availability

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

Parameters:
pRay - A reference to a com.esri.arcgis.geometry.IRay (in)
hint - The hint (in)
pLocation - 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.

queryLocateWithinDistance

void queryLocateWithinDistance(IRay pRay,
                               double maxDistance,
                               IGeometry pLocations)
                               throws IOException,
                                      AutomationException
Returns the intersections of the query ray and the TIN.

Description

Finds the points of intersection between a ray and the surface. Can return either the first point of intersection or all intersections. The search for intersections can also be constrained by distance.

pRay is the ray for which intersections will be calculated.

maxDistance is the 2D search distance along the ray that acts as a constraint. No intersections will be returned beyond this distance. Pass a negative value to turn the constraint off and search as far as possible (i.e., to the edge of the surface).

pLocations is either a point or multipoint. This must be instantiated before calling the method. Pass a point if you want only the first intersction. Use a multipoint to collect multiple intersections. If multiple intersections are found they will be placed in sorted order from first to last in the multipoint. If there is no intersection, either because the ray does not intersect the surface or doesn't intersect within the maxDistance, the output will be set to empty.

Notes:

Product Availability

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

Parameters:
pRay - A reference to a com.esri.arcgis.geometry.IRay (in)
maxDistance - The maxDistance (in)
pLocations - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

extract

ITin extract(IPolygon pBoundary,
             int boundaryEdgeType,
             int boundaryEdgeValue,
             boolean bConstrainedDelaunay,
             boolean bAllowEdgeSwapping)
             throws IOException,
                    AutomationException
Extract part of the TIN.

Description

Extracts a subarea from the source TIN into a new TIN.

pBoundary is a polygon that defines the area to be extracted. This polygon will be profiled using linear interpolation on the source TIN. This profiled polygon, along with the data inside it from the source TIN, will then be used to construct the output TIN. If there's no overlap between the data area of the source TIN and the polygon the result will be NULL.

boundaryEdgeType is an esriTinEdgeType used to control whether the boundary polygon is enforced using hard, soft, or regular edges.

boundaryEdgeValue is the tag value associated with the boundary edges. Set this to 0 if you're not interested in using specific edge tag values.

bConstrainedDelaunay is used to control the type of output TIN when the input is delaunay conforming. In this case you have the option of keeping the result conforming or converting it to constrained. The benefit of having it constrained is you get a best fit match between input and output surface without the need to add densification points. The drawback is the natural neighbors interpolator can't be used on a constrained TIN. If the input is already constrained this property has no effect; the result will be constrained.

bAllowEdgeSwapping is used to control the quality of fit between the input and output surfaces when both are delaunay conforming. This means the input must be delaunay and bConstrainedDelaunay is set to FALSE. If these conditions are met, setting bAllowEdgeSwapping to FALSE will force a best fit match between the surfaces at the expense of the output having nodes added where necessary to enforce that match. Setting it to TRUE will permit some differences between the input and output surfaces. Relaxing the need for an exact match has the benefit of requiring less nodes be added to the output TIN.

Notes:

Product Availability

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

Parameters:
pBoundary - A reference to a com.esri.arcgis.geometry.IPolygon (in)
boundaryEdgeType - A com.esri.arcgis.geodatabase.esriTinEdgeType constant (in)
boundaryEdgeValue - The boundaryEdgeValue (in)
bConstrainedDelaunay - The bConstrainedDelaunay (in)
bAllowEdgeSwapping - The bAllowEdgeSwapping (in)
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.

setProfileWeedTolerance

void setProfileWeedTolerance(double pTolerance)
                             throws IOException,
                                    AutomationException
The profile weeding tolerance.

Product Availability

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

Parameters:
pTolerance - The pTolerance (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getProfileWeedTolerance

double getProfileWeedTolerance()
                               throws IOException,
                                      AutomationException
The profile weeding tolerance.

Description

The ProfileWeedTolerance is used as a 2D distance filter on the vertices of output polylines and polygons from methods that perform interpolation and profiling (e.g., InterpolateShape, GetProfile, GetLineOfSight). As a result, no two consecutive vertices along the paths of the resulting geometry will be closer than this distance.

Weeding is most applicable when using linear interpolation. This because the 'natural densification' used by linear interpolation, the insertion of vertices at triangle edge intersections, can result in very closely spaced vertices at certain locations.

If the intention of setting ProfileWeedTolerance is for temporary use, then be sure to save its current value before changing it and reset it back when finished.

To turn off weeding set ProfileWeedTolerance to 0.

Product Availability

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

Returns:
The pTolerance
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.