# ArcGISGeometryEngine

Namespace: Esri::GameEngine::Geometry
Class: Esri/GameEngine/Geometry/ArcGISGeometryEngine
Since: 1.0.0

## Summary

Performs geometric operations such as spatial relationship tests, reprojections, shape manipulations, topological query and analysis operations on ArcGISGeometry objects.

## Methods

SignatureReturn TypeSummary

Area(const ArcGISGeometry&)

double

Calculates the area of the given geometry.

AreaGeodetic(const ArcGISGeometry&, const ArcGISAreaUnit&, ArcGISGeodeticCurveType)

double

Calculates the geodetic area of the given geometry using a geodetic curve.

AutoComplete(const ArcGISList<ArcGISPolygon>&, const ArcGISList<ArcGISPolyline>&)

ArcGISImmutableArray<ArcGISPolygon>

Fills the closed gaps between polygons using polygon boundaries and polylines as the boundary for the new polygons.

Boundary(const ArcGISGeometry&)

ArcGISGeometry

Calculates the boundary of the given geometry.

Buffer(const ArcGISGeometry&, double)

ArcGISPolygon

Creates a buffer polygon at the specified distance around the given geometry. This is a planar buffer operation. Use ArcGISGeometryEngine::BufferGeodetic to produce geodetic buffers.

Buffer(const ArcGISList<ArcGISGeometry>&, const ArcGISList<double>&, bool)

ArcGISImmutableArray<ArcGISPolygon>

Creates a buffer or buffers relative to the given collection of geometries. This is a planar buffer operation. Use ArcGISGeometryEngine::BufferGeodetic to produce geodetic buffers.

ArcGISPolygon

Creates a buffer polygon at the specified distance around the given geometry, calculated using a geodetic curve.

BufferGeodetic(const ArcGISList<ArcGISGeometry>&, const ArcGISList<double>&, const ArcGISLinearUnit&, double, ArcGISGeodeticCurveType, bool)

ArcGISImmutableArray<ArcGISPolygon>

Creates and returns a geodetic buffer or buffers relative to the given collection of geometries.

Clip(const ArcGISGeometry&, const ArcGISEnvelope&)

ArcGISGeometry

Constructs the portion of a geometry that intersects an envelope.

CombineExtents(const ArcGISGeometry&, const ArcGISGeometry&)

ArcGISEnvelope

Returns an ArcGISEnvelope representing the minimum extent that encloses both geometry1 and geometry2.

CombineExtents(const ArcGISList<ArcGISGeometry>&)

ArcGISEnvelope

Returns an ArcGISEnvelope representing the minimum extent that encloses all geometries in the given collection.

Contains(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if geometry1 contains geometry2.

ConvexHull(const ArcGISGeometry&)

ArcGISGeometry

Calculates the minimum bounding geometry (convex hull) that completely encloses the given geometry.

ConvexHull(const ArcGISList<ArcGISGeometry>&, bool)

ArcGISImmutableArray<ArcGISGeometry>

Calculates the minimum bounding geometry (convex hull) for the geometries in the given collection.

CreatePointAlong(const ArcGISPolyline&, double)

ArcGISPoint

Return the point at the given distance along the line.

Crosses(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests whether geometry1 crosses geometry2.

Cut(const ArcGISGeometry&, const ArcGISPolyline&)

ArcGISImmutableArray<ArcGISGeometry>

Cuts the 'geometry' into parts with the 'cutter' ArcGISPolyline.

Densify(const ArcGISGeometry&, double)

ArcGISGeometry

Densifies the input geometry by inserting additional vertices along the geometry at an interval defined by maxSegmentLength.

ArcGISGeometry

Densifies the input geometry by creating additional vertices along the geometry, using a geodetic curve.

Difference(const ArcGISGeometry&, const ArcGISGeometry&)

ArcGISGeometry

Constructs the set-theoretic difference between two geometries.

Disjoint(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if the two geometries are disjoint.

Distance(const ArcGISGeometry&, const ArcGISGeometry&)

double

Calculates the simple planar (Euclidean) distance between two geometries.

DistanceGeodetic(const ArcGISPoint&, const ArcGISPoint&, const ArcGISLinearUnit&, const ArcGISAngularUnit&, ArcGISGeodeticCurveType)

ArcGISGeodeticDistanceResult

Calculates the geodetic distance between two given points and calculates the azimuth at both points for the geodetic curve that connects the points.

ArcGISGeometry

Constructs a geodesic ellipse centered on a specific point.

Equals(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if two geometries are equal.

Extend(const ArcGISPolyline&, const ArcGISPolyline&, ArcGISGeometryExtendOptions)

ArcGISPolyline

Extends a polyline using a polyline as the extender using the type of extension specified with extendOptions.

FractionAlong(const ArcGISPolyline&, const ArcGISPoint&, double)

double

Finds the location on the line nearest the input point, expressed as the fraction along the line's total geodesic length, if the point is within the specified distance from the closest location on the line.

Generalize(const ArcGISGeometry&, double, bool)

ArcGISGeometry

Generalizes the given geometry by removing vertices based on the Douglas-Poiker algorithm.

Intersection(const ArcGISGeometry&, const ArcGISGeometry&)

ArcGISGeometry

Calculates the intersection of two geometries.

Intersections(const ArcGISGeometry&, const ArcGISGeometry&)

ArcGISImmutableArray<ArcGISGeometry>

Calculates the intersection of two geometries.

Intersects(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if two geometries intersect each other.

IsSimple(const ArcGISGeometry&)

bool

Tests whether the geometry is topologically simple.

LabelPoint(const ArcGISPolygon&)

ArcGISPoint

Calculates an interior point for the given polygon. This point can be used by clients to place a label for the polygon.

Length(const ArcGISGeometry&)

double

Calculates the length of the given geometry.

LengthGeodetic(const ArcGISGeometry&, const ArcGISLinearUnit&, ArcGISGeodeticCurveType)

double

Calculates the geodetic length of the geometry.

Move(const ArcGISGeometry&, double, double)

ArcGISGeometry

Moves the provided geometry by the specified distances along the x-axis and y-axis.

MoveGeodetic(const ArcGISList<ArcGISPoint>&, double, const ArcGISLinearUnit&, double, const ArcGISAngularUnit&, ArcGISGeodeticCurveType)

ArcGISImmutableArray<ArcGISPoint>

Moves each point in the point collection in a specified direction by a geodetic distance.

NearestCoordinate(const ArcGISGeometry&, const ArcGISPoint&)

ArcGISProximityResult

Determines the nearest point in the input geometry to the input point using a simple planar measurement.

NearestCoordinateGeodetic(const ArcGISGeometry&, const ArcGISPoint&, double, const ArcGISLinearUnit&)

ArcGISProximityResult

Determines the nearest point in the input geometry to the input point, by using a shape preserving geodetic approximation of the input geometry.

NearestVertex(const ArcGISGeometry&, const ArcGISPoint&)

ArcGISProximityResult

Returns an ArcGISProximityResult that describes the nearest vertex in the input geometry to the input point.

ArcGISGeometry

Normalizes the input geometry so that it does not intersect the antimeridian. This may be necessary when wrap around is enabled on the map.

ArcGISGeometry

Creates an offset version of the input geometry.

Overlaps(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if two geometries overlap.

Project(const ArcGISGeometry&, const ArcGISSpatialReference&)

ArcGISGeometry

Projects the given geometry from its current spatial reference system into the given spatial reference system.

Project(const ArcGISGeometry&, const ArcGISSpatialReference&, const ArcGISDatumTransformation&)

ArcGISGeometry

Projects the given geometry from its current spatial reference system into the given output spatial reference system, applying the datum transformation provided.

Relate(const ArcGISGeometry&, const ArcGISGeometry&, const FString&)

bool

Tests if the two geometries are related using a custom relation.

RemoveM(const ArcGISGeometry&)

ArcGISGeometry

Return a copy of the given geometry with its m-values removed.

RemoveZ(const ArcGISGeometry&)

ArcGISGeometry

Return a copy of the given geometry with its z-coordinate removed.

RemoveZAndM(const ArcGISGeometry&)

ArcGISGeometry

Return a copy of the given geometry with its z-coordinates and m-values removed.

Reshape(const ArcGISMultipart&, const ArcGISPolyline&)

ArcGISMultipart

Reshape polygons or polylines with a single path polyline.

Rotate(const ArcGISGeometry&, double, const ArcGISPoint&)

ArcGISGeometry

Rotates the geometry by the specified angle of rotation around the provided origin point.

Scale(const ArcGISGeometry&, double, double, const ArcGISPoint&)

ArcGISGeometry

Scales the given geometry by the specified factors from the specified origin point.

ArcGISGeometry

Constructs a geodesic sector defined by a geodesic arc and 2 radii.

SetM(const ArcGISGeometry&, double)

ArcGISGeometry

Return a copy of a geometry with the supplied m-value.

SetZ(const ArcGISGeometry&, double)

ArcGISGeometry

Return a copy of a geometry with the supplied z-coordinate.

SetZAndM(const ArcGISGeometry&, double, double)

ArcGISGeometry

Return a copy of a geometry with the supplied z-coordinate and m-value.

Simplify(const ArcGISGeometry&)

ArcGISGeometry

Simplifies the given geometry to make it topologically consistent according to its geometry type.

SymmetricDifference(const ArcGISGeometry&, const ArcGISGeometry&)

ArcGISGeometry

Calculates the symmetric difference (exclusive or) of the two geometries.

Touches(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if the two geometries have at least one boundary point in common, but no interior points.

Union(const ArcGISGeometry&, const ArcGISGeometry&)

ArcGISGeometry

Calculates the union of the two geometries.

Union(const ArcGISList<ArcGISGeometry>&)

ArcGISGeometry

Calculates the union of a collection of geometries.

Within(const ArcGISGeometry&, const ArcGISGeometry&)

bool

Tests if geometry1 is within geometry2.

### Area

static double Area(const ArcGISGeometry& geometry)

Calculates the area of the given geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

##### Returns double

The area of the given geometry in the same units as the geometry's spatial reference system.

### AreaGeodetic

static double AreaGeodetic(const ArcGISGeometry& geometry, const ArcGISAreaUnit& unit, ArcGISGeodeticCurveType curveType)

Calculates the geodetic area of the given geometry using a geodetic curve.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

unit
Yes

The unit of measure for the return value. If null, the default unit is meters squared.

curveType
No

The type of curve to calculate the geodetic area.

##### Returns double

The calculated geodetic area in the requested unit.

### AutoComplete

static ArcGISImmutableArray<ArcGISPolygon> AutoComplete(const ArcGISList<ArcGISPolygon>& existingBoundaries, const ArcGISList<ArcGISPolyline>& newBoundaries)

Fills the closed gaps between polygons using polygon boundaries and polylines as the boundary for the new polygons.

Since 1.0.0

##### Arguments
NameTypeConstSummary
existingBoundaries
ArcGISList<ArcGISPolygon>
Yes

The polygons.

newBoundaries
ArcGISList<ArcGISPolyline>
Yes

The polylines.

##### Returns ArcGISImmutableArray<ArcGISPolygon>

The new polygons that were created. If either existingBoundaries or newBoundaries is empty, returns an empty array.

### Boundary

static ArcGISGeometry Boundary(const ArcGISGeometry& geometry)

Calculates the boundary of the given geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

##### Returns ArcGISGeometry

The boundary of the given geometry.

### Buffer

static ArcGISPolygon Buffer(const ArcGISGeometry& geometry, double distance)

Creates a buffer polygon at the specified distance around the given geometry. This is a planar buffer operation. Use ArcGISGeometryEngine::BufferGeodetic to produce geodetic buffers.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

distance
No

The distance to buffer the geometry. It must be in the same units as the geometry's spatial reference.

##### Returns ArcGISPolygon

A polygon object that represents a buffer at the desired distance relative to the given geometry.

### Buffer

static ArcGISImmutableArray<ArcGISPolygon> Buffer(const ArcGISList<ArcGISGeometry>& geometries, const ArcGISList<double>& distances, bool unionResult)

Creates a buffer or buffers relative to the given collection of geometries. This is a planar buffer operation. Use ArcGISGeometryEngine::BufferGeodetic to produce geodetic buffers.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometries
ArcGISList<ArcGISGeometry>
Yes

A collection of geometries.

distances
ArcGISList<double>
Yes

The distance to buffer each geometry, expressed as an ArcGISList<T> of double. If the size of the distances collection is less than the number of geometries, the last distance value is used for the rest of geometries.

unionResult
No

Returns a single geometry that buffers all the geometries (true), or one buffer for each in the given collection (false).

##### Returns ArcGISImmutableArray<ArcGISPolygon>

A collection of polygons representing buffers at the defined distance(s) relative to the input geometries.

### BufferGeodetic

static ArcGISPolygon BufferGeodetic(const ArcGISGeometry& geometry, double distance, const ArcGISLinearUnit& distanceUnit, double maxDeviation, ArcGISGeodeticCurveType curveType)

Creates a buffer polygon at the specified distance around the given geometry, calculated using a geodetic curve.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

distance
No

The distance to buffer the geometry.

distanceUnit
Yes

The unit of measure for the distance.

maxDeviation
No

The maximum deviation between points. If NaN, then a maximum deviation of up to 0.2% of the buffer distance (maximum 0.01 meters). The purpose is to return an output geometry with a smooth boundary.

curveType
No

The ArcGISGeodeticCurveType used to calculate the buffer.

##### Returns ArcGISPolygon

The geodetic buffer.

### BufferGeodetic

static ArcGISImmutableArray<ArcGISPolygon> BufferGeodetic(const ArcGISList<ArcGISGeometry>& geometries, const ArcGISList<double>& distances, const ArcGISLinearUnit& distanceUnit, double maxDeviation, ArcGISGeodeticCurveType curveType, bool unionResult)

Creates and returns a geodetic buffer or buffers relative to the given collection of geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometries
ArcGISList<ArcGISGeometry>
Yes

A collection of geometries.

distances
ArcGISList<double>
Yes

The distance to buffer each geometry, expressed as an ArcGISList<T> of double. If the size of the distances array is less than the number of geometries, the last distance value is used for the rest of geometries.

distanceUnit
Yes

The unit of measure for the distance.

maxDeviation
No

The maximum deviation between points. If NaN, then a maximum deviation of up to 0.2% of the buffer distance (maximum 0.01 meters). The purpose is to return an output geometry with a smooth boundary.

curveType
No

The ArcGISGeodeticCurveType used to calculate the buffer.

unionResult
No

Return a single geometry that buffers all the geometries (true), or one buffer for each in the given collection (false).

##### Returns ArcGISImmutableArray<ArcGISPolygon>

A collection of polygon geometries that represent a geodetic buffer at the desired distance(s) relative to the given geometries. If 'unionResult' is true, the resulting collection contains a single polygon. If geometries is empty, returns an empty array.

### Clip

static ArcGISGeometry Clip(const ArcGISGeometry& geometry, const ArcGISEnvelope& envelope)

Constructs the portion of a geometry that intersects an envelope.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The geometry to be clipped by the given envelope.

envelope
Yes

The envelope that clips the given geometry.

##### Returns ArcGISGeometry

A geometry object that represents the portion of a geometry that intersects an envelope.

### CombineExtents

static ArcGISEnvelope CombineExtents(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Returns an ArcGISEnvelope representing the minimum extent that encloses both geometry1 and geometry2.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns ArcGISEnvelope

The maximum extent of the two given geometries.

### CombineExtents

static ArcGISEnvelope CombineExtents(const ArcGISList<ArcGISGeometry>& geometries)

Returns an ArcGISEnvelope representing the minimum extent that encloses all geometries in the given collection.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometries
ArcGISList<ArcGISGeometry>
Yes

A collection of geometries.

##### Returns ArcGISEnvelope

The maximum extent of the geometries in the collection.

### Contains

static bool Contains(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if geometry1 contains geometry2.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if geometry1 contains geometry2, false otherwise.

### ConvexHull

static ArcGISGeometry ConvexHull(const ArcGISGeometry& geometry)

Calculates the minimum bounding geometry (convex hull) that completely encloses the given geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

##### Returns ArcGISGeometry

The minimum bounding geometry that completely encloses the given geometry.

### ConvexHull

static ArcGISImmutableArray<ArcGISGeometry> ConvexHull(const ArcGISList<ArcGISGeometry>& geometries, bool merge)

Calculates the minimum bounding geometry (convex hull) for the geometries in the given collection.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometries
ArcGISList<ArcGISGeometry>
Yes

A collection of geometries.

merge
No

True indicates that a single convex hull geometry is calculated that encloses all the geometries in the collection. False indicates that one convex hull geometry is calculated for each geometry in the collection.

##### Returns ArcGISImmutableArray<ArcGISGeometry>

The minimum bounding geometry that completely encloses the geometries in the given collection.

### CreatePointAlong

static ArcGISPoint CreatePointAlong(const ArcGISPolyline& polyline, double distance)

Return the point at the given distance along the line.

Since 1.0.0

##### Arguments
NameTypeConstSummary
polyline
Yes

The polyline from which the point is created.

distance
No

The distance along the polyline where the point is created, using the units of the polyline.

##### Returns ArcGISPoint

The point at the given distance along the line.

### Crosses

static bool Crosses(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests whether geometry1 crosses geometry2.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

true if geometry1 crosses geometry2, false otherwise.

### Cut

static ArcGISImmutableArray<ArcGISGeometry> Cut(const ArcGISGeometry& geometry, const ArcGISPolyline& cutter)

Cuts the 'geometry' into parts with the 'cutter' ArcGISPolyline.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The input ArcGISGeometry to be cut.

cutter
Yes

The ArcGISPolyline used to divide the geometry into pieces where they cross the cutter.

##### Returns ArcGISImmutableArray<ArcGISGeometry>

An ArcGISImmutableArray<T> of ArcGISGeometry.

### Densify

static ArcGISGeometry Densify(const ArcGISGeometry& geometry, double maxSegmentLength)

Densifies the input geometry by inserting additional vertices along the geometry at an interval defined by maxSegmentLength.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

An ArcGISEnvelope, ArcGISPolygon, or ArcGISPolyline geometry.

maxSegmentLength
No

The maximum distance between vertices when the input geometry is densified. The linear unit is assumed to be that of the input geometry's spatial reference (decimal degrees for a geometry with a geographic spatial reference, meters for geometry with a Mercator spatial reference, and so on). Use ArcGISSpatialReference::Unit to determine the unit used by a specific spatial reference.

##### Returns ArcGISGeometry

The densified geometry.

### DensifyGeodetic

static ArcGISGeometry DensifyGeodetic(const ArcGISGeometry& geometry, double maxSegmentLength, const ArcGISLinearUnit& lengthUnit, ArcGISGeodeticCurveType curveType)

Densifies the input geometry by creating additional vertices along the geometry, using a geodetic curve.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry to densify.

maxSegmentLength
No

The maximum distance between vertices when the input geometry is densified, in the given linear units.

lengthUnit
Yes

The unit of measure for the maximum segment length. If null, meters are assumed.

curveType
No

The type of curve to calculate.

##### Returns ArcGISGeometry

The geodetic densified geometry.

### Difference

static ArcGISGeometry Difference(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Constructs the set-theoretic difference between two geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

The second geometry of dimension equal to or greater than the elements of the first geometry.

##### Returns ArcGISGeometry

A new geometry object that represents the difference of the two given input geometries.

### Disjoint

static bool Disjoint(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if the two geometries are disjoint.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if the two geometries are disjoint, false otherwise.

### Distance

static double Distance(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Calculates the simple planar (Euclidean) distance between two geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns double

The distance between the two geometries in the same units as the geometry's spatial reference.

### DistanceGeodetic

static ArcGISGeodeticDistanceResult DistanceGeodetic(const ArcGISPoint& point1, const ArcGISPoint& point2, const ArcGISLinearUnit& distanceUnit, const ArcGISAngularUnit& azimuthUnit, ArcGISGeodeticCurveType curveType)

Calculates the geodetic distance between two given points and calculates the azimuth at both points for the geodetic curve that connects the points.

Since 1.0.0

##### Arguments
NameTypeConstSummary
point1
Yes

A point object.

point2
Yes

Another point object.

distanceUnit
Yes

The linear unit of measure for the returned results.

azimuthUnit
Yes

The angular unit of measure for the returned results.

curveType
No

The type of curve to calculate.

##### Returns ArcGISGeodeticDistanceResult

A structure containing the distance and the azimuth at both points for the geodetic curve that connects them.

### EllipseGeodesic

static ArcGISGeometry EllipseGeodesic(const ArcGISGeodesicEllipseParameters& parameters)

Constructs a geodesic ellipse centered on a specific point.

Since 1.0.0

##### Arguments
NameTypeConstSummary
parameters
Yes

Various parameters needed to construct the ellipse.

##### Returns ArcGISGeometry

The geodesic ellipse described by the parameters.

### Equals

static bool Equals(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if two geometries are equal.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if the two geometries are equal, false otherwise.

### Extend

static ArcGISPolyline Extend(const ArcGISPolyline& polyline, const ArcGISPolyline& extender, ArcGISGeometryExtendOptions extendOptions)

Extends a polyline using a polyline as the extender using the type of extension specified with extendOptions.

Since 1.0.0

##### Arguments
NameTypeConstSummary
polyline
Yes

The polyline to be extended.

extender
Yes

The polyline to extend to.

extendOptions
No

The flag for the type of extend operation to perform.

##### Returns ArcGISPolyline

The extended polyline, or null if polyline could not be extended.

### FractionAlong

static double FractionAlong(const ArcGISPolyline& line, const ArcGISPoint& point, double tolerance)

Finds the location on the line nearest the input point, expressed as the fraction along the line's total geodesic length, if the point is within the specified distance from the closest location on the line.

Since 1.0.0

##### Arguments
NameTypeConstSummary
line
Yes

The line to locate the point's distance along its length.

point
Yes

The point to locate.

tolerance
Yes

The maximum distance that a point is allowed to be from the line, in the units of the ArcGISSpatialReference. If the tolerance is -1, the fraction of the closest location on the line is always returned as long as the point lies between the two ends of the polyline. If the distance from the point to the closest location on the line is greater than the tolerance, or the tolerance is -1 and the point does not lie between the two ends of the polyline, NAN is returned.

##### Returns double

The length along the line nearest the input point, expressed as the fraction of the line's length between 0.0 and 1.0, or NAN if the point is outside the tolerance.

### Generalize

static ArcGISGeometry Generalize(const ArcGISGeometry& geometry, double maxDeviation, bool removeDegenerateParts)

Generalizes the given geometry by removing vertices based on the Douglas-Poiker algorithm.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

maxDeviation
No

The maximum distance that the generalized geometry can deviate from the original, in the same units as the geometry's spatial reference system.

removeDegenerateParts
No

True if degenerated parts of the resulting geometry that are not needed for drawing are removed, false otherwise.

##### Returns ArcGISGeometry

The geometry object that represents the generalization of the input geometry.

### Intersection

static ArcGISGeometry Intersection(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Calculates the intersection of two geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns ArcGISGeometry

A geometry object that represents the intersection of the given geometries.

### Intersections

static ArcGISImmutableArray<ArcGISGeometry> Intersections(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Calculates the intersection of two geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns ArcGISImmutableArray<ArcGISGeometry>

A collection of geometry objects that represent the intersection of the given geometries.

### Intersects

static bool Intersects(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if two geometries intersect each other.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if the two geometries intersect, false otherwise.

### IsSimple

static bool IsSimple(const ArcGISGeometry& geometry)

Tests whether the geometry is topologically simple.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The geometry object.

##### Returns bool

True if the geometry object is simple, false otherwise.

### LabelPoint

static ArcGISPoint LabelPoint(const ArcGISPolygon& polygon)

Calculates an interior point for the given polygon. This point can be used by clients to place a label for the polygon.

Since 1.0.0

##### Arguments
NameTypeConstSummary
polygon
Yes

A polygon object.

##### Returns ArcGISPoint

A geometry object that represents the intersection of the given geometries.

### Length

static double Length(const ArcGISGeometry& geometry)

Calculates the length of the given geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

##### Returns double

The length of the given geometry.

### LengthGeodetic

static double LengthGeodetic(const ArcGISGeometry& geometry, const ArcGISLinearUnit& lengthUnit, ArcGISGeodeticCurveType curveType)

Calculates the geodetic length of the geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

lengthUnit
Yes

The unit of measure for the returned value. If null, meters are assumed.

curveType
No

The type of curve to calculate.

##### Returns double

The geodetic length of the given geometry.

### Move

static ArcGISGeometry Move(const ArcGISGeometry& geometry, double deltaX, double deltaY)

Moves the provided geometry by the specified distances along the x-axis and y-axis.

Since 1.3.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The geometry to move.

deltaX
Yes

The distance to move the geometry along the x-axis, in the units of the given geometry's spatial reference.

deltaY
Yes

The distance to move the geometry along the y-axis, in the units of the given geometry's spatial reference.

##### Returns ArcGISGeometry

A new geometry based on moving the given geometry by the given delta values.

### MoveGeodetic

static ArcGISImmutableArray<ArcGISPoint> MoveGeodetic(const ArcGISList<ArcGISPoint>& pointCollection, double distance, const ArcGISLinearUnit& distanceUnit, double azimuth, const ArcGISAngularUnit& azimuthUnit, ArcGISGeodeticCurveType curveType)

Moves each point in the point collection in a specified direction by a geodetic distance.

Since 1.0.0

##### Arguments
NameTypeConstSummary
pointCollection
ArcGISList<ArcGISPoint>
Yes

An ArcGISList<T> of ArcGISPoint geometries. Contents of the ArcGISList<T> are copied.

distance
No

The distance to move the points.

distanceUnit
Yes

The unit of measure for distance. If null, meters are assumed.

azimuth
No

The azimuth angle of the direction for the points.

azimuthUnit
Yes

The angular unit of measure for azimuth. If null, degrees are assumed.

curveType
No

The type of curve to calculate.

##### Returns ArcGISImmutableArray<ArcGISPoint>

A new collection of points moved by the given distance from the input collection.

### NearestCoordinate

static ArcGISProximityResult NearestCoordinate(const ArcGISGeometry& geometry, const ArcGISPoint& point)

Determines the nearest point in the input geometry to the input point using a simple planar measurement.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

point
Yes

The point of interest.

##### Returns ArcGISProximityResult

An ArcGISProximityResult containing the results of the operation. This is null if the input geometry is empty. ArcGISProximityResult::Distance is zero if the point lies inside an input polygon, polyline, or envelope.

### NearestCoordinateGeodetic

static ArcGISProximityResult NearestCoordinateGeodetic(const ArcGISGeometry& geometry, const ArcGISPoint& point, double maxDeviation, const ArcGISLinearUnit& deviationUnit)

Determines the nearest point in the input geometry to the input point, by using a shape preserving geodetic approximation of the input geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object on which to calculate the nearest coordinate to the point parameter.

point
Yes

The point from which to calculate the nearest coordinate on the geometry parameter.

maxDeviation
No

The maximum distance that the geodetic geometry can deviate from the original, in the units of the deviationUnit parameter.

deviationUnit
Yes

The unit of measure for the maxDeviation parameter. If null, the units of maxDeviation are assumed to be meters.

##### Returns ArcGISProximityResult

An ArcGISProximityResult containing the results of the operation, where the ArcGISProximityResult::Distance is returned in meters. Returns null if the input geometry is empty. ArcGISProximityResult::Distance is zero if the point lies inside an input polygon, polyline, or envelope.

### NearestVertex

static ArcGISProximityResult NearestVertex(const ArcGISGeometry& geometry, const ArcGISPoint& point)

Returns an ArcGISProximityResult that describes the nearest vertex in the input geometry to the input point.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

point
Yes

The point of interest.

##### Returns ArcGISProximityResult

A struct containing the results of the operation.

### NormalizeCentralMeridian

static ArcGISGeometry NormalizeCentralMeridian(const ArcGISGeometry& geometry)

Normalizes the input geometry so that it does not intersect the antimeridian. This may be necessary when wrap around is enabled on the map.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

##### Returns ArcGISGeometry

The normalized geometry.

### Offset

static ArcGISGeometry Offset(const ArcGISGeometry& geometry, double distance, ArcGISGeometryOffsetType offsetType, double bevelRatio, double flattenError)

Creates an offset version of the input geometry.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

distance
No

The offset distance for the new geometry.

offsetType
No

The offset type the resulting geometry.

bevelRatio
No

The ratio used to produce a bevel join instead of a miter join (used only when the offset type is Miter).

flattenError
No

The maximum distance of the resulting segments compared to the true circular arc (used only when the offset type if round).

##### Returns ArcGISGeometry

The offset geometry object.

### Overlaps

static bool Overlaps(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if two geometries overlap.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if the two geometries overlap, false otherwise.

### Project

static ArcGISGeometry Project(const ArcGISGeometry& geometry, const ArcGISSpatialReference& spatialReference)

Projects the given geometry from its current spatial reference system into the given spatial reference system.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

spatialReference
Yes

The target spatial reference system.

##### Returns ArcGISGeometry

The geometry projected into the given SpatialReference. If the input geometry has a null SpatialReference, no projection occurs; instead, an identical geometry with the given SpatialReference is returned.

### Project

static ArcGISGeometry Project(const ArcGISGeometry& geometry, const ArcGISSpatialReference& outputSpatialReference, const ArcGISDatumTransformation& datumTransformation)

Projects the given geometry from its current spatial reference system into the given output spatial reference system, applying the datum transformation provided.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

outputSpatialReference
Yes

The spatial reference system to project to.

datumTransformation
Yes

The datum transformation that describes how coordinates are converted from one coordinate system to another.

##### Returns ArcGISGeometry

The geometry projected into the given SpatialReference. If the input geometry has a null SpatialReference, no projection occurs; instead, an identical geometry with the given SpatialReference is returned.

### Relate

static bool Relate(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2, const FString& relation)

Tests if the two geometries are related using a custom relation.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

relation
Yes

The DE-9IM string to be evaluated. This must be nine characters long and only contain the characters TF*012.

##### Returns bool

True if the two geometries have the given relationship, false otherwise.

### RemoveM

static ArcGISGeometry RemoveM(const ArcGISGeometry& geometry)

Return a copy of the given geometry with its m-values removed.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry.

##### Returns ArcGISGeometry

A copy of the given geometry with its m-values removed.

### RemoveZ

static ArcGISGeometry RemoveZ(const ArcGISGeometry& geometry)

Return a copy of the given geometry with its z-coordinate removed.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry.

##### Returns ArcGISGeometry

A copy of the given geometry with its z-coordinates removed.

### RemoveZAndM

static ArcGISGeometry RemoveZAndM(const ArcGISGeometry& geometry)

Return a copy of the given geometry with its z-coordinates and m-values removed.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry.

##### Returns ArcGISGeometry

A copy of the given geometry with both its z-coordinates and m-values removed.

### Reshape

static ArcGISMultipart Reshape(const ArcGISMultipart& geometry, const ArcGISPolyline& reshaper)

Reshape polygons or polylines with a single path polyline.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The polygon or polyline to be reshaped.

reshaper
Yes

The single path polyline reshaper.

##### Returns ArcGISMultipart

The reshaped polygon or polyline, or null if geometry could not be reshaped.

### Rotate

static ArcGISGeometry Rotate(const ArcGISGeometry& geometry, double angle, const ArcGISPoint& origin)

Rotates the geometry by the specified angle of rotation around the provided origin point.

Since 1.3.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The geometry to rotate.

angle
Yes

The angle by which to rotate the geometry, counterclockwise, in degrees.

origin
Yes

The center of rotation. If null, or ArcGISGeometry::IsEmpty is true, the center of the extent of the given geometry is used.

##### Returns ArcGISGeometry

A new geometry constructed by rotating the input geometry by the specified angle of rotation around the provided origin point.

### Scale

static ArcGISGeometry Scale(const ArcGISGeometry& geometry, double scaleX, double scaleY, const ArcGISPoint& origin)

Scales the given geometry by the specified factors from the specified origin point.

Since 1.3.0

##### Arguments
NameTypeConstSummary
geometry
Yes

The geometry to scale.

scaleX
Yes

The scale factor along the x-axis. It can be positive or negative. It cannot be a non-numeric value.

scaleY
Yes

The scale factor along the y-axis. It can be positive or negative. It cannot be a non-numeric value.

origin
Yes

The point around which the geometry will be scaled. If null, or ArcGISGeometry::IsEmpty is true, the center of the extent of the geometry parameter is used.

##### Returns ArcGISGeometry

A new geometry constructed by scaling the input geometry by the specified factors from the specified origin point.

### SectorGeodesic

static ArcGISGeometry SectorGeodesic(const ArcGISGeodesicSectorParameters& parameters)

Constructs a geodesic sector defined by a geodesic arc and 2 radii.

Since 1.0.0

##### Arguments
NameTypeConstSummary
parameters
Yes

Specifies the parameters for constructing the sector.

##### Returns ArcGISGeometry

A geometry representing the geodesic sector.

### SetM

static ArcGISGeometry SetM(const ArcGISGeometry& geometry, double m)

Return a copy of a geometry with the supplied m-value.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry.

m
No

The m-value.

##### Returns ArcGISGeometry

A copy of the given geometry with its m-values set to the supplied value.

### SetZ

static ArcGISGeometry SetZ(const ArcGISGeometry& geometry, double z)

Return a copy of a geometry with the supplied z-coordinate.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry.

z
No

The z-coordinate.

##### Returns ArcGISGeometry

A copy of the given geometry with its z-coordinates set to the supplied value.

### SetZAndM

static ArcGISGeometry SetZAndM(const ArcGISGeometry& geometry, double z, double m)

Return a copy of a geometry with the supplied z-coordinate and m-value.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry.

z
No

The z-coordinate.

m
No

The m-value.

##### Returns ArcGISGeometry

A copy of the given geometry with its z-coordinates and m-values set to the supplied values.

### Simplify

static ArcGISGeometry Simplify(const ArcGISGeometry& geometry)

Simplifies the given geometry to make it topologically consistent according to its geometry type.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry
Yes

A geometry object.

##### Returns ArcGISGeometry

The simplified geometry.

### SymmetricDifference

static ArcGISGeometry SymmetricDifference(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Calculates the symmetric difference (exclusive or) of the two geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns ArcGISGeometry

The symmetric difference of the two geometries.

### Touches

static bool Touches(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if the two geometries have at least one boundary point in common, but no interior points.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if the two geometries touch, false otherwise.

### Union

static ArcGISGeometry Union(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Calculates the union of the two geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns ArcGISGeometry

The union of the two geometries.

### Union

static ArcGISGeometry Union(const ArcGISList<ArcGISGeometry>& geometries)

Calculates the union of a collection of geometries.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometries
ArcGISList<ArcGISGeometry>
Yes

A collection of geometries.

##### Returns ArcGISGeometry

The union of all the geometries in the given collection.

### Within

static bool Within(const ArcGISGeometry& geometry1, const ArcGISGeometry& geometry2)

Tests if geometry1 is within geometry2.

Since 1.0.0

##### Arguments
NameTypeConstSummary
geometry1
Yes

A geometry object.

geometry2
Yes

Another geometry object.

##### Returns bool

True if geometry1 is within geometry2, false otherwise.