CIV-250 · Lesson 8 of 12 · 28 min
Coordinate geometry and areas
Once control points have coordinates, almost every surveying task becomes a coordinate geometry problem. Where should a stake go so that it lies on the property line 18 m from the corner? What is the distance and azimuth between two monuments that cannot see each other? Where do two lines intersect? What is the area of a lot? Coordinate geometry, usually shortened to COGO, answers these questions with simple trigonometry applied to northings and eastings. It is built into every data collector and design program, but surveyors and engineers must understand it well enough to check results and to solve problems when the software is not at hand. This lesson covers the inverse and forward computations, radiation surveys, intersections, offsets and areas by coordinates, using the Coulee Ridge traverse coordinates from lesson 7.
Coordinates and conventions
Surveying coordinates are written as northing and easting, usually in that order, with north as the reference direction for azimuths. This is different from the mathematical convention of x and y with angles measured counterclockwise from the x axis. In surveying, the easting plays the role of x and the northing the role of y, and azimuths run clockwise from north. As a result, the trigonometry swaps sine and cosine compared with the mathematical form: the change in northing uses the cosine of the azimuth and the change in easting uses the sine. Mixing the two conventions is a common source of errors in spreadsheets and programs.
The forward computation
Given the coordinates of a known point, and the azimuth and horizontal distance to a new point, the new point's coordinates follow directly:
This is exactly how a total station's data collector computes coordinates during a topographic survey. From a setup on a known point, oriented on a backsight, every observation of horizontal angle and distance becomes an azimuth and distance, and every target becomes a coordinated point. Collecting points this way is called a radiation survey or side shots, because the lines radiate from the instrument. Each radiated point is measured once and has no check, so important points are measured from two setups or tied by a second measurement.
Worked problem
Radiating a building corner
From control point CR-5 (N 4688.897, E 1206.750), oriented on CR-1, Grant measures a horizontal distance of 156.338 m on an azimuth of 41°12′20″ to the corner of an existing shed. Find the coordinates of the corner.
Show solution
- \[\Delta N = 156.338\cos 41.2056° = 117.621\ \text{m}\]
- \[\Delta E = 156.338\sin 41.2056° = 102.990\ \text{m}\]
- \[N = 4688.897 + 117.621 = 4806.518 \qquad E = 1206.750 + 102.990 = 1309.740\]
Answer: The shed corner is at N 4806.518, E 1309.740 in the project system.
The inverse computation
The inverse computation works the other way: given two points with coordinates, find the azimuth and horizontal distance between them. It is used constantly, for example to compute the backsight azimuth when setting up a total station, to find the length of a property line, or to check that a set stake is where it should be.
The arctangent gives an angle between −90° and +90°, so the quadrant must be determined from the signs of ΔN and ΔE. Programming languages provide a two-argument arctangent, often called atan2, which handles the quadrant automatically; in surveying it is used as atan2(ΔE, ΔN), with easting first, so that the result is an azimuth from north. A negative result is converted to the 0° to 360° range by adding 360°.
| Sign of ΔN | Sign of ΔE | Quadrant | Azimuth from the reduced angle θ = tan⁻¹|ΔE/ΔN| |
|---|---|---|---|
| + | + | NE | θ |
| − | + | SE | 180° − θ |
| − | − | SW | 180° + θ |
| + | − | NW | 360° − θ |
Worked problem
Inverse between two traverse points
Find the horizontal distance and azimuth from CR-6 (N 4715.349, E 1704.535) to CR-8 (N 5193.424, E 1367.899), two points that cannot see each other through the trees.
Show solution
- \(\Delta N = 5193.424 - 4715.349 = +478.075\) m and \(\Delta E = 1367.899 - 1704.535 = -336.636\) m.
- \[L = \sqrt{478.075^2 + 336.636^2} = 584.705\ \text{m}\]
- \[\theta = \tan^{-1}\frac{336.636}{478.075} = 35.1513° = 35°09'05''\]
- ΔN is positive and ΔE negative, so the line is in the NW quadrant: \(Az = 360° - 35°09'05'' = 324°50'55''\).
Answer: The distance is 584.705 m and the azimuth is 324°50′55″, a bearing of N35°09′05″W.
Intersections
Many layout and boundary problems require the point where two lines meet. Three cases are common.
- Bearing–bearing (azimuth–azimuth) intersection: two lines, each defined by a known point and an azimuth, meet at a point. This occurs, for example, when locating the corner where two property lines meet, or a point sighted from two control stations.
- Distance–distance intersection: two circles, each centered on a known point with a known radius, meet at up to two points. This is used to locate a point from two measured distances, such as a tie from two building corners.
- Azimuth–distance intersection: a line from one point meets a circle around another, giving up to two solutions.
For an azimuth–azimuth intersection, the unknown point P lies at distance \(t\) from point A along azimuth \(\alpha\) and at distance \(u\) from point B along azimuth \(\beta\). Writing both expressions for P and equating them gives two linear equations in \(t\) and \(u\). A convenient solution uses the triangle formed by A, B and P: the inverse from A to B gives the length and azimuth of AB, the angles at A and B follow from the azimuth differences, and the sine law gives the other two sides.
Worked problem
Locating a fence corner by intersection
An old fence corner P is sighted from CR-6 (N 4715.349, E 1704.535) on an azimuth of 330°15′00″ and from CR-7 (N 5072.682, E 1782.222) on an azimuth of 245°40′00″. Find its coordinates.
Show solution
- Inverse CR-6 to CR-7: \(\Delta N = 357.333\), \(\Delta E = 77.687\), so \(AB = 365.680\) m on azimuth 12°15′56″.
- Angle at CR-6 between CR-7 and P: \(12°15'56'' - 330°15'00'' + 360° = 42°00'56''\).
- Angle at CR-7 between P and CR-6: the back azimuth CR-7 to CR-6 is 192°15′56″, so the angle is \(245°40'00'' - 192°15'56'' = 53°24'04''\).
- Angle at P: \(180° - 42°00'56'' - 53°24'04'' = 84°35'00''\).
- \[AP = 365.680\,\frac{\sin 53°24'04''}{\sin 84°35'00''} = 294.895\ \text{m}\]
- \[N_P = 4715.349 + 294.895\cos 330.25° = 4971.377 \qquad E_P = 1704.535 + 294.895\sin 330.25° = 1558.203\]
Answer: The fence corner is at N 4971.377, E 1558.203. Computing from CR-7 with BP = 245.860 m gives the same point, which checks the solution. A good intersection has an angle at P between about 30° and 150°; very sharp or very flat intersections magnify small errors in the azimuths.
Offsets from a line
Layout and boundary work often need the perpendicular offset from a point to a line and the distance along the line to the foot of the perpendicular. If a line runs from A on azimuth \(\alpha\), and a point P is at distance \(d\) and azimuth \(\theta\) from A (from an inverse), then the distance along the line and the offset are:
A positive offset is to the right of the line looking from A in the direction \(\alpha\), and a negative offset is to the left. This is the computation behind checking whether a building is set back far enough from a property line, or how far an as-built pipe is from its design alignment.
Areas by coordinates
The area of any closed polygon whose corners have coordinates can be computed by the coordinate method, sometimes called the shoelace formula after the criss-cross pattern of its products. List the corners in order around the polygon, repeat the first at the end, and compute:
The sign of the sum depends on whether the corners are listed clockwise or counterclockwise, so the absolute value is taken. The method works for concave polygons as long as the boundary does not cross itself. To avoid rounding problems with large coordinate values, it is common to subtract a constant from all northings and eastings before computing, which does not change the area. An equivalent older method computes the area from latitudes and departures using double meridian distances, and it appears in many older textbooks and plans.
Worked problem
Area of a subdivision lot
A lot on the Coulee Ridge plan has corners, in order, at (N 4812.315, E 1405.220), (N 4815.102, E 1423.987), (N 4851.006, E 1419.441) and (N 4849.770, E 1398.512). Find its area.
Show solution
- Subtract 4800 from northings and 1400 from eastings to simplify: (12.315, 5.220), (15.102, 23.987), (51.006, 19.441), (49.770, −1.488).
- Products \(E_i N_{i+1} - E_{i+1} N_i\): \(5.220(15.102) - 23.987(12.315) = -216.567\); \(23.987(51.006) - 19.441(15.102) = 929.883\); \(19.441(49.770) - (-1.488)(51.006) = 1043.475\); \((-1.488)(12.315) - 5.220(49.770) = -278.124\).
- \[A = \frac{1}{2}\,|{-216.567} + 929.883 + 1043.475 - 278.124| = \frac{1478.667}{2} = 739.33\ \text{m}^2\]
Answer: The lot area is 739.33 m², or about 7,958 ft² (0.183 acre). One acre is 43,560 ft², or about 4,046.86 m².
# COGO toolkit: inverse, forward, azimuth-azimuth intersection, offsets and area
import math
def inverse(p, q):
dN, dE = q[0] - p[0], q[1] - p[1]
return math.hypot(dN, dE), math.degrees(math.atan2(dE, dN)) % 360
def forward(p, az, L):
a = math.radians(az)
return p[0] + L * math.cos(a), p[1] + L * math.sin(a)
def intersect(A, azA, B, azB):
a, b = math.radians(azA), math.radians(azB)
dN, dE = B[0] - A[0], B[1] - A[1]
det = math.cos(a) * -math.sin(b) + math.cos(b) * math.sin(a)
t = (dN * -math.sin(b) + math.cos(b) * dE) / det
return forward(A, azA, t)
def offset(A, az_line, P):
d, th = inverse(A, P)
r = math.radians(th - az_line)
return d * math.cos(r), d * math.sin(r)
def area(pts):
n = len(pts)
return abs(sum(pts[i][1] * pts[(i + 1) % n][0] - pts[(i + 1) % n][1] * pts[i][0] for i in range(n))) / 2
CR5, CR6, CR7, CR8 = (4688.897, 1206.750), (4715.349, 1704.535), (5072.682, 1782.222), (5193.424, 1367.899)
L, az = inverse(CR6, CR8)
print(f"CR-6 to CR-8: {L:.3f} m at {az:.4f} deg")
print("shed corner:", tuple(round(x, 3) for x in forward(CR5, 41 + 12/60 + 20/3600, 156.338)))
P = intersect(CR6, 330.25, CR7, 245 + 40/60)
print("fence corner:", tuple(round(x, 3) for x in P))
along, off = offset(CR6, inverse(CR6, CR7)[1], P)
print(f"fence corner is {along:.3f} m along CR-6 to CR-7 and {off:.3f} m off the line (negative = left)")
lot = [(4812.315, 1405.220), (4815.102, 1423.987), (4851.006, 1419.441), (4849.770, 1398.512)]
loop = [(5000.000, 1000.000), CR5, CR6, CR7, CR8]
print(f"lot area {area(lot):.2f} m2; traverse area {area(loop):,.1f} m2 = {area(loop) / 10000:.3f} ha = {area(loop) / 4046.8564224:.2f} acres")CR-6 to CR-8: 584.705 m at 324.8487 deg shed corner: (4806.518, 1309.74) fence corner: (4971.377, 1558.203) fence corner is 219.096 m along CR-6 to CR-7 and -197.383 m off the line (negative = left) lot area 739.33 m2; traverse area 279,379.8 m2 = 27.938 ha = 69.04 acres
The coordinates of the Coulee Ridge traverse itself enclose 279,379.8 m², or 27.938 ha (about 69.04 acres), which Ruth compares with the area of the subdivision boundary on the title records as a rough check on the overall survey.
Precision of computed areas
Areas inherit the errors of the coordinates. For a parcel whose corners are each known to a few millimeters, the area of a typical lot is uncertain by a fraction of a square meter, as the error propagation example in lesson 2 showed. Legal plans therefore report areas to a sensible precision, such as 0.01 m² or 0.001 ha in Canada, or 0.01 acre or the nearest square foot in the United States, depending on the size of the parcel and the applicable standards. More digits do not make an area more accurate.
Subdivision problems
A common design problem is to cut a parcel into lots of specified area or frontage. For example, a line parallel to one side may need to be placed so that it cuts off exactly 800 m². Such problems are solved by computing the area of a trial shape, finding how the area changes as the dividing line moves, and adjusting, or by solving the geometry directly for simple shapes such as trapezoids. Design software does this iteratively, but the logic is the same: every lot corner ends up with coordinates, and the plan dimensions, bearings and areas are all computed by the inverse and area routines shown in this lesson. On the ground, those corners are then staked by the forward computation from the nearest control point.
Checking COGO work
Coordinate geometry is precise, but it faithfully propagates any wrong input. Good habits include:
- Sketching every problem roughly to scale, so that a computed azimuth in the wrong quadrant or a distance off by a factor is obvious.
- Checking inverses by recomputing the forward point, and intersections by computing from both known points.
- Verifying that closed figures close: the sum of computed latitudes and departures around a lot should be zero.
- Keeping track of the coordinate system and units of every point list, especially when combining data from different sources.
Common mistakes
MistakeUsing atan(ΔE/ΔN) without fixing the quadrant.
InsteadUse atan2(ΔE, ΔN), or assign the quadrant from the signs of ΔN and ΔE.
MistakeSwapping sine and cosine by following the mathematical x–y convention.
InsteadIn surveying, ΔN = L cos Az and ΔE = L sin Az.
MistakeListing polygon corners out of order for the area formula.
InsteadList corners in sequence around the boundary so the polygon does not cross itself.
MistakeAccepting a weak intersection with a very small angle at the unknown point.
InsteadChoose intersecting lines that meet at a reasonable angle, roughly 30° to 150°.
Summary and key terms
- Surveying coordinates use northing and easting with azimuths clockwise from north: ΔN = L cos Az, ΔE = L sin Az.
- The forward computation gives a new point from a known point, azimuth and distance; radiation surveys use it for every side shot.
- The inverse computation gives distance and azimuth between two points; atan2(ΔE, ΔN) handles the quadrant.
- Azimuth–azimuth intersections can be solved with the sine law in the triangle formed with the known points.
- Offsets from a line use the angle between the line and the direction to the point.
- The coordinate (shoelace) method gives the area of any simple polygon; report areas to a sensible precision.
- COGO
- Coordinate geometry: computations of positions, directions, distances and areas from coordinates.
- Forward computation
- Computing a new point from a known point, an azimuth and a distance.
- Inverse computation
- Computing the distance and azimuth between two points with known coordinates.
- Radiation survey
- A survey in which points are located by angle and distance from one setup.
- Intersection
- Locating a point as the meeting point of two lines, circles, or a line and a circle.
- Offset
- The perpendicular distance from a point to a reference line.
- Coordinate method
- Computing a polygon area from the coordinates of its corners.
- Hectare
- An area of 10,000 m².
Practice problems
Work each problem on paper first, then reveal the answer to check.
From point A (N 1000.000, E 2000.000), a point B is 250.000 m away at azimuth 210°00′00″. Find B.
Show answer
N \(= 1000 + 250\cos 210° = 783.494\), E \(= 2000 + 250\sin 210° = 1875.000\).
Find the distance and azimuth from (N 500.000, E 500.000) to (N 380.000, E 660.000).
Show answer
ΔN = −120, ΔE = +160: distance 200.000 m; azimuth \(180° - 53°07'48'' = 126°52'12''\).
Find the area of a triangle with corners (0, 0), (0, 40) and (30, 0) in (N, E).
Show answer
600 square units.
A line runs from A on azimuth 90°. A point P is 50 m from A on azimuth 100°. Find the distance along the line and the offset.
Show answer
Along \(= 50\cos 10° = 49.240\) m; offset \(= 50\sin 10° = 8.682\) m to the right.
Why is it helpful to subtract a constant from coordinates before computing an area?
Show answer
It keeps the products small and avoids rounding errors without changing the area.
Convert 2.5 ha to square meters and to acres.
Show answer
25,000 m², about 6.18 acres.
Lesson quiz · 5 questions
Score 60% or more to complete this lesson.
Create a free account to save your progress, take quizzes and earn a certificate.