com.esri.arcgis.datasourcesraster
Interface IPolynomialXform

All Superinterfaces:
IGeodataXform, Serializable
All Known Implementing Classes:
PolynomialXform

public interface IPolynomialXform
extends IGeodataXform, Serializable

Provides access to members that control a polynomial transform.

Remarks

The IPolynomialXform interface provides methods and properties used to create the PolynomialXform object and perform error analysis of the polynomial transformation.

You can create a PolynomialXform in two ways: One is to use DefineFromControlPoints with two sets of control points, one being source and one being target, to construct a polynomial. The other way is to set the polynomial coefficients directly using DefineFromCoefficients if the polynomial coefficients are known.

A polynomial transformation is an approximate transformation and the IPolynomialXform interface provides two ways to calculate the system residuals and RMS. One is based on the control points using GetSystemResidual and GetSystemRMS methods; and the other is based on a set of check points using CheckResidualRMS method.

Product Availability

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


Method Summary
 void applyRotation(int direction, IPoint pPivotPoint, double degree)
          Applies a rotation to the polynomial.
 void applyScale(int direction, double scaleX, double scaleY)
          Applies a scale to the polynomial.
 void applyShift(int direction, double shiftX, double shiftY)
          Applies a shift to the polynomial.
 void checkResidualRMS(IPointCollection checkingsSurcePoints, IPointCollection checkingsTargetPoints, int direction, Object[] pResidual, double[] rms)
          Gets the residuals and RMS using checking points.
 void defineFromCoefficients(Object pForwardPolyCoef, Object pReversePolyCoef, int order)
          Defines a polynomial XForm from polynomial (order: 1-3) coefficients .
 void defineFromControlPoints(IPointCollection pSrcPoints, IPointCollection pTarPoints, int order)
          Defines a polynomial (order: 1-3) XForm from control points.
 Object getCoefficients(int direction)
          Gets the coefficients of the polynomial.
 void getControlPoints(IPointCollection[] ppSrcPoints, IPointCollection[] ppTarPoints)
          Gets control points used in defining the polynomial.
 int getOrder()
          The polynomial order (1-3).
 Object getSystemResidual(int direction)
          Gets the system residuals.
 double getSystemRMS(int direction)
          Gets the system RMS.
 
Methods inherited from interface com.esri.arcgis.geodatabase.IGeodataXform
getDomains, getSpatialReference, isIdentity, setSpatialReferenceByRef, transform, transformCellsize, transformExtent, transformPoints
 

Method Detail

defineFromControlPoints

void defineFromControlPoints(IPointCollection pSrcPoints,
                             IPointCollection pTarPoints,
                             int order)
                             throws IOException,
                                    AutomationException
Defines a polynomial (order: 1-3) XForm from control points.

Remarks

The polynomial order can be 1,2,3 and the number of the non-correlated control points required must be at least 3, 6, and 10 respectively.

Product Availability

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

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

defineFromCoefficients

void defineFromCoefficients(Object pForwardPolyCoef,
                            Object pReversePolyCoef,
                            int order)
                            throws IOException,
                                   AutomationException
Defines a polynomial XForm from polynomial (order: 1-3) coefficients .

Remarks

The polynomial coefficients are a variant array of nx2 elements of double type, where n=3 for the first order, 6 for the second order and 10 for the third order.

To define a PolynomialXform to work with raster dataset, coefficients for both forward case and reverse case must be set.

You can define a PolynomialXform that performs one direction transformation, for transforming other type of data, such as forward transformation, pass Null to reverse coefficient argument.

Product Availability

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

Parameters:
pForwardPolyCoef - A Variant (in)
pReversePolyCoef - A Variant (in)
order - The order (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getControlPoints

void getControlPoints(IPointCollection[] ppSrcPoints,
                      IPointCollection[] ppTarPoints)
                      throws IOException,
                             AutomationException
Gets control points used in defining the polynomial.

Product Availability

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

Parameters:
ppSrcPoints - A reference to a com.esri.arcgis.geometry.IPointCollection (out: use single element array)
ppTarPoints - A reference to a com.esri.arcgis.geometry.IPointCollection (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getOrder

int getOrder()
             throws IOException,
                    AutomationException
The polynomial order (1-3).

Product Availability

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

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

getCoefficients

Object getCoefficients(int direction)
                       throws IOException,
                              AutomationException
Gets the coefficients of the polynomial.

Remarks

The polynomial coefficients are in a variant array of nx2 elements of double type, where n=3 for the first order, 6 for the second order and 10 for the third order.

Product Availability

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

Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
Returns:
A Variant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSystemResidual

Object getSystemResidual(int direction)
                         throws IOException,
                                AutomationException
Gets the system residuals.

Remarks

The residual returned is variant array of double type, the size of the array is the number of control points used in creating the PolynomialXform.

Product Availability

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

Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
Returns:
A Variant
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSystemRMS

double getSystemRMS(int direction)
                    throws IOException,
                           AutomationException
Gets the system RMS.

Product Availability

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

Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
Returns:
The rms
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

checkResidualRMS

void checkResidualRMS(IPointCollection checkingsSurcePoints,
                      IPointCollection checkingsTargetPoints,
                      int direction,
                      Object[] pResidual,
                      double[] rms)
                      throws IOException,
                             AutomationException
Gets the residuals and RMS using checking points.

Remarks

Get residual on a set of user specified check points. The residual returned is a variant array of double type.

Product Availability

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

Parameters:
checkingsSurcePoints - A reference to a com.esri.arcgis.geometry.IPointCollection (in)
checkingsTargetPoints - A reference to a com.esri.arcgis.geometry.IPointCollection (in)
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
pResidual - A Variant (out: use single element array)
rms - The rms (out: use single element array)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

applyRotation

void applyRotation(int direction,
                   IPoint pPivotPoint,
                   double degree)
                   throws IOException,
                          AutomationException
Applies a rotation to the polynomial.

Remarks

ApplyRotation method append an xform to the existing PolynomialXform. To define a rotation transformation for work with raster data using this method, you must define both forward and inverse transformation.

For example, to define a rotation of 45 degree unclockwise, you need to call

pPolynomialXform.ApplyRotate TransformationForward, 45

pPolynomialXform.ApplyRotate TransformationReverse, -45

Product Availability

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

Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
pPivotPoint - A reference to a com.esri.arcgis.geometry.IPoint (in)
degree - The degree (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

applyShift

void applyShift(int direction,
                double shiftX,
                double shiftY)
                throws IOException,
                       AutomationException
Applies a shift to the polynomial.

Remarks

ApplyShift method append an xform to the existing PolynomialXform. To define a shift transformation to work with raster data using this method, you must define both forward and inverse transformations.

For example, to define a shift transformation, you need to call

pPolynomialXform.ApplyShift TransformationForward, 10

pPolynomialXform.ApplyShift TransformationReverse, -10

Product Availability

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

Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
shiftX - The shiftX (in)
shiftY - The shiftY (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

applyScale

void applyScale(int direction,
                double scaleX,
                double scaleY)
                throws IOException,
                       AutomationException
Applies a scale to the polynomial.

Remarks

ApplyScale method appends an xform to the existing PolynomialXform. To define an scale transformation to work with raster data using this method, you must define both forward and inverse transformations.

For example, to define a scale transformation, you need to call

pPolynomialXform.ApplyScale TransformationForward, 10

pPolynomialXform.ApplyScale TransformationReverse, 1/10

Product Availability

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

Parameters:
direction - A com.esri.arcgis.geometry.esriTransformDirection constant (in)
scaleX - The scaleX (in)
scaleY - The scaleY (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.