This document is archived and information here might be outdated.  Recommended version.


IConstructPoint2.ConstructAverage Method (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference (Geometry)  

IConstructPoint2.ConstructAverage Method

Constructs the geometric average of the input point collection. Optionally uses the specified attribute as a source of weights on the locations of the points.

[Visual Basic .NET]
Public Sub ConstructAverage ( _
    ByVal Points As IPointCollection, _
    ByVal attributeType As esriGeometryAttributes _
)
[C#]
public void ConstructAverage (
    IPointCollection Points,
    esriGeometryAttributes attributeType
);
[C++]
HRESULT ConstructAverage(
  IPointCollection* Points,
  esriGeometryAttributes attributeType
);
[C++]

Parameters Points
Points is a parameter of type IPointCollection attributeType
attributeType is a parameter of type esriGeometryAttributes

Product Availability

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

Remarks

If attributeType is esriAttributeNone then the average point location is computed; otherwise the attribute specified by attributeType serves as a weight. Points whose weight attribute is NaN are ignored (a weight of 0 has a similar affect). The resulting point will have the (weighted) average for all their attributes. However this does not apply to ID's; no average is calculated for them in any case; but thay can be used as weight.

Only the following attributeType values are permitted: esriAttributeNone, esriAttributeZ, esriAttributeM, esriAttributeID.

[C#]

//This example demonstrates how to use the ConstructAverage method
private void ConstructAverage_Example()
{
    IPointCollection4 pointCollection=new MultipointClass();
    object Missing=Type.Missing;
    //Create a MAware and a ZAware multipoint
    IPoint[] points=new IPoint[4];
    for(int i=0; i < 4; i++)
    {
        points[i]= new PointClass();
    }
    points[0].PutCoords(0, 0);
    points[0].Z=10;
    points[0].M=10;
    points[1].PutCoords(0, 5);
    points[1].Z=10;
    points[1].M=10;
    points[2].PutCoords(5, 5);
    points[2].Z=20;
    points[2].M=20;
    points[3].PutCoords(5, 0);
    points[3].Z=10;
    points[3].M=20;
    IGeometryBridge geomBridge=new GeometryEnvironmentClass();
    geomBridge.AddPoints(pointCollection, ref points);
    IZAware zAwareCollection=pointCollection as IZAware;
    zAwareCollection.ZAware=true;
    IMAware mAwareCollection=pointCollection as IMAware;
    mAwareCollection.MAware=true;
    IConstructPoint2 constructionPoint=new PointClass();
    //Construct the average point with esriAttributeM
    constructionPoint.ConstructAverage(pointCollection, esriGeometryAttributes.esriAttributeM);
    IPoint outPutPoint1=constructionPoint as IPoint;
    System.Windows.Forms.MessageBox.Show("Output point with esriAttributeM: " + outPutPoint1.X + " , " + outPutPoint1.Y + " , " + outPutPoint1.M);
    //Construct the average point with esriAttributeZ
    constructionPoint.ConstructAverage(pointCollection, esriGeometryAttributes.esriAttributeZ);
    IPoint outPutPoint2=constructionPoint as IPoint;
    System.Windows.Forms.MessageBox.Show("Output point with esriAttributeZ: " + outPutPoint2.X + " , " + outPutPoint2.Y + " , " + outPutPoint2.Z);
}

[Visual Basic .NET]

    'This example demonstrates how to use the ConstructAverage method
    Sub ConstructAverage_Example()
        Dim pPoints(0 To 3) As IPoint, pPointcol As IPointCollection4
        Dim pZawareCol As IZAware, pMawareCol As IMAware
        Dim pPoint As IPoint, pconstpoint2 As IConstructPoint2
        'Create a MAware and a ZAware multipoint
        pPoints(0)=New Point
        pPoints(1)=New Point
        pPoints(2)=New Point
        pPoints(3)=New Point
        pPoints(0).PutCoords(0, 0)
        pPoints(1).PutCoords(0, 5)
        pPoints(2).PutCoords(5, 5)
        pPoints(3).PutCoords(5, 0)
        pPoints(0).Z=10
        pPoints(1).Z=10
        pPoints(2).Z=20
        pPoints(3).Z=10
        pPoints(0).M=10
        pPoints(1).M=10
        pPoints(2).M=20
        pPoints(3).M=10
        pPointcol=New Multipoint
        Dim pGeometryBridge As IGeometryBridge
        pGeometryBridge=New GeometryEnvironment
        pGeometryBridge.AddPoints(pPointcol, pPoints)
        pZawareCol=pPointcol
        pZawareCol.ZAware=True
        pMawareCol=pPointcol
        pMawareCol.MAware=True
        pconstpoint2=New Point
        '** Construct the average point with esriAttributeM
        pconstpoint2.ConstructAverage(pPointcol, esriGeometryAttributes.esriAttributeM)
        pPoint=pconstpoint2
        Debug.Print("***** esriAttributeM *****")
        Debug.Print(pPoint.X & " , " & pPoint.Y & " , " & pPoint.M)
        '** Construct the average point with esriAttributeZ
        pconstpoint2=New Point
        pconstpoint2.ConstructAverage(pPointcol, esriGeometryAttributes.esriAttributeZ)
        pPoint=pconstpoint2
        Debug.Print("***** esriAttributeZ *****")
        Debug.Print(pPoint.X & " , " & pPoint.Y & " , " & pPoint.Z)
    End Sub

See Also

IConstructPoint2 Interface