 # What algorithm is used by ArcGIS for Desktop to determine the area of a polygon?

Last Published: April 25, 2020

The algorithm used in ArcGIS to calculate the area of a polygon is called 'Area Calculation by Gauss'. Esri uses a normalized form of it to preserve numeric precision. This is a common algorithm.

The algorithm calculates the area for each ring (part) in a polygon. If the ring is clockwise (outer ring) the area is positive, and if the ring is counterclockwise (inner ring) the value will be negative.

A partial sum of a trapezoid's area is used where:

partialSums - Array of double
cPoints - Number of points in the ring
points - Array of point structure, the structure as X and Y as attributes
yOrigin - Double equal to the Y value of the last point (cpoints-1)

The first trapezoid's area is:

partialSums = (points.x - points[cPoints-1].x) * (points.y - yOrigin)

For each point starting at index 1:

for j = 1 to j < cPoints-1
partialSums[j] = (points[j+1].x - points[j-1].x) * (points[j].y - yOrigin)

If the ring contains non-linear segments, such as Circular Arc, Elliptic Arc, and Bezier Curve, a correction of the area is applied for each trapezoid.

The final area of the ring is:

SUM(PartialSums)/2

The final area of the polygon is:

SUM(Area of each ring)

Here is an example with the following points (one square ring) zz:

X0 = 0 ; Y0 = 0
X1 = 0 ; Y1 = 10
X2 = 10 ; Y2 = 10
X3 = 10 ; Y3 = 0
X4 = 0 ; Y4 = 0

partialSums(0) = (X0 - X4) * (Y0 - Y4) = (0 - 0) * (0 - 0) = 0
partialSums(1) = (X2 - X0) * (Y1 - Y4) = (10 - 0) * (10 - 0) = 100
partialSums(2) = (X3 - X1) * (Y2 - Y4) = (10 - 0) * (10 - 0) = 100
partialSums(3) = (X4 - X2) * (Y3 - Y4) = (0 - 10) * (0 - 0) = 0

There is no correction to apply in this case because only lines are used.

sum (partialSums)/2 = 200/2 = 100

`Note:For ArcObjects developers, area is defined as IArea::Area.`

Article ID:000011746

Software:
• ArcMap

Get help from ArcGIS experts

Contact technical support