In this topic
Creating a multipoint using points
The following code shows how to build a multipoint using a collection of points. This approach is preferred when you have a sequence of vertices as input.
[VB.NET] Public Sub CreateMultipointByPoints()
'Build multipoint from a sequence of points.
'Add arrays of points to a geometry using the IGeometryBridge2 interface on the
'GeometryEnvironment singleton object.
Dim geometryBridge2 As IGeometryBridge2=New GeometryEnvironmentClass
Dim pointCollection4 As IPointCollection4=New MultipointClass
'TODO:
'pointCollection4.SpatialReference='Define the spatial reference of the new multipoint.
Dim aWKSPointBuffer() As WKSPoint
Dim cPoints As Long=4 'The number of points in the first part.
ReDim aWKSPointBuffer(0 To CInt(cPoints - 1))
'TODO:
'aWKSPointBuffer='Read cPoints into the point buffer.
geometryBridge2.SetWKSPoints(pointCollection4, aWKSPointBuffer)
'pointCollection4 has now been defined.
End Sub
[C#] public void CreateMultipointByPoints()
{
//Build multipoint from a sequence of points.
//Add arrays of points to a geometry using the IGeometryBridge2 interface on the
//GeometryEnvironment singleton object.
IGeometryBridge2 geometryBridge2=new GeometryEnvironmentClass();
IPointCollection4 pointCollection4=new MultipointClass();
//TODO:
//pointCollection4.SpatialReference='Define the spatial reference of the new multipoint.
WKSPoint[] aWKSPointBuffer=null;
long cPoints=4; //The number of points in the first part.
aWKSPointBuffer=new WKSPoint[System.Convert.ToInt32(cPoints - 1) + 1];
//TODO:
//aWKSPointBuffer='Read cPoints into the point buffer.
geometryBridge2.SetWKSPoints(pointCollection4, ref aWKSPointBuffer);
//pointCollection4 has now been defined.
}
Creating a multipoint using existing geometries
A multipoint can be created based on existing geometries. In the following code, a multipoint is generated by buffering an existing polyline and getting the vertices of the result polygon:
[VB.NET] Public Sub CreateMultipointFromExistingGeometry(ByVal polyline As IPolyline)
'Build a multipoint from a polygon.
'The multipoint contains point elements being the copies of buffered polygon.
Dim topologicalOperator2 As ITopologicalOperator2=CType(polyline, ITopologicalOperator2)
topologicalOperator2.IsKnownSimple_2=False
topologicalOperator2.Simplify()
'Create a buffer polygon of the input geometry.
Dim geometryBuffer As IGeometry=topologicalOperator2.Buffer(5)
Dim polygonBuffer As IPolygon=CType(geometryBuffer, IPolygon)
'Get the points of the buffered polygon.
Dim pointCollectionBuffer As IPointCollection=CType(polygonBuffer, IPointCollection)
'Create a multipoint.
Dim geometryMultipoint As IGeometry=New MultipointClass
geometryMultipoint.SpatialReference=polyline.SpatialReference
Dim pointCollectionlMultipoint As IPointCollection=CType(geometryMultipoint, IPointCollection)
'Add copies of the polyline vertices to the multipoint.
pointCollectionlMultipoint.AddPointCollection(pointCollectionBuffer)
End Sub
[C#] public void CreateMultipointFromExistingGeometry(IPolyline polyline)
{
//Build a multipoint from a polygon.
//The multipoint contains point elements being the copies of buffered polygon.
ITopologicalOperator2 topologicalOperator2=(ITopologicalOperator2)polyline;
topologicalOperator2.IsKnownSimple_2=false;
topologicalOperator2.Simplify();
//Create a buffer polygon of the input geometry.
IGeometry geometryBuffer=topologicalOperator2.Buffer(5);
IPolygon polygonBuffer=(IPolygon)geometryBuffer;
//Get the points of the buffered polygon.
IPointCollection pointCollectionBuffer=(IPointCollection)polygonBuffer;
//Create a multipoint.
IGeometry geometryMultipoint=new MultipointClass();
geometryMultipoint.SpatialReference=polyline.SpatialReference;
IPointCollection pointCollectionlMultipoint=(IPointCollection)
geometryMultipoint;
//Add copies of the polyline vertices to the multipoint.
pointCollectionlMultipoint.AddPointCollection(pointCollectionBuffer);
}
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
- ESRI.ArcGIS.Geometry
- ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)