Surveying Lecture: Intersection & Forward Computation Calculating coordinates from known points, length, and bearing
Learning Objectives Understand basic concepts: coordinates, azimuths, and bearings. Compute a point's coordinates from a known point, distance and bearing (forward problem). Locate an unknown point by intersection of two observed bearings (angular intersection). Follow field procedures, handle special cases, and run MATLAB examples.
Basic Concepts Coordinate system: Easting (X) and Northing (Y) in a projected plane. Azimuth: angle measured clockwise from North (0°..360°). Bearing: quadrant notation (e.g., N 30° E). Convert to azimuth for computation. Angles must be in radians for trigonometric functions in many computing environments.
Convert Bearings ↔ Azimuths Bearing (quadrant) -> Azimuth rules (example): N α E → az = α S α E → az = 180° - α S α W → az = 180° + α N α W → az = 360° - α Always unify to degrees or radians consistently before computing.
Forward Computation (Polar Offset) Given known point (X0, Y0), distance L, and azimuth θ (clockwise from North): ΔN = L * cos(θ) ΔE = L * sin(θ) New point: X = X0 + ΔE, Y = Y0 + ΔN Note: use θ in radians if using sin/cos from typical programming libraries.
Example: Forward Computation Given: Known point (X0, Y0) = (5000.000 m, 2000.000 m) Distance L = 250.0 m, Bearing = N 30° E → Azimuth θ = 30° ΔN = 250 * cos(30°) = 216.50635 m ΔE = 250 * sin(30°) = 125.00000 m Result: X = 5125.000 m, Y = 2216.506 m
Intersection by Two Bearings (Overview) Used when two known control points observe bearings/azimuths toward an unknown point. Each observation defines a straight line; the intersection gives the coordinate. Good practice: ensure bearings are not nearly parallel (small intersection angle).
Mathematical Solution (Two Bearing Intersection) Parametric lines: Line1: P1 + t1·d1, where d1 = [sinθ1; cosθ1] Line2: P2 + t2·d2, where d2 = [sinθ2; cosθ2] Solve: P1 + t1·d1 = P2 + t2·d2 → 2 linear equations for t1 and t2. Determinant = sin(θ1 - θ2). If close to zero, lines nearly parallel (bad geometry). Intersection: P = P1 + t1·d1 (compute t1 from the linear system).
Intersection Formula (t₁) Let ΔX = X2 - X1 and ΔY = Y2 - Y1. t1 = (ΔX·cosθ2 + (-ΔY)·sinθ2) / sin(θ1 - θ2) (use consistent sign conventions). Intersection point: X = X1 + t1·sinθ1, Y = Y1 + t1·cosθ1. (In practice it's safest to solve the 2×2 linear system numerically to avoid sign mistakes.)
Numerical Example: Two-Bearing Intersection P1 = (5000.000, 2000.000), bearing to unknown = 045° (az1 = 45°). P2 = (5200.000, 2150.000), bearing to unknown = 315° (az2 = 315°). Compute direction vectors d1=[sin45°,cos45°], d2=[sin315°,cos315°], solve for t1. Intersection computed (steps omitted) → example result: (approx) X = 5118.6 m, Y = 2169.3 m Include full MATLAB snippet in the appendix to reproduce exact numeric steps.
Practical Considerations & Checks Check intersection angle: ensure |θ1 - θ2| is large enough (e.g., > 3°) to limit dilution. Verify by back-sighting: compute bearings from computed point back to P1/P2 and compare. If more than two observations exist, use least-squares adjustment for robustness. Account for instrument errors, refraction, and datum/coordinate system consistency.
Field Procedure Checklist Set up and level instrument over known points correctly. Record point IDs, coordinates, instrument height, target heights, and time. Measure bearings/azimuths carefully; take repeated readings and average. Note magnetic vs. grid/north reference and apply corrections (declination).
Appendix: MATLAB snippets Copy these functions into MATLAB to compute forward offsets and intersections. % MATLAB functions: forward and intersection (variable names end with underscore) function [X_new_, Y_new_] = forward_offset_(X0_, Y0_, L_, az_deg_) % Compute new coordinates from known point, distance and azimuth (degrees, clockwise from North) az_rad_ = deg2rad(az_deg_); dN_ = L_ * cos(az_rad_); dE_ = L_ * sin(az_rad_); X_new_ = X0_ + dE_; Y_new_ = Y0_ + dN_; end function [X_int_, Y_int_, success_] = intersect_two_bearings_(X1_, Y1_, az1_deg_, X2_, Y2_, az2_deg_) % Return intersection of two lines from P1 and P2 with azimuths az1_deg_, az2_deg_ % success_ = false if geometry is bad (lines nearly parallel) az1_rad_ = deg2rad(az1_deg_); az2_rad_ = deg2rad(az2_deg_); d1_ = [sin(az1_rad_); cos(az1_rad_)]; d2_ = [sin(az2_rad_); cos(az2_rad_)]; A_ = [d1_, -d2_]; b_ = [X2_-X1_; Y2_-Y1_]; D_ = det(A_); if abs(D_) < 1e-6 success_ = false; X_int_ = NaN; Y_int_ = NaN; return; end t_ = A_\b_; t1_ = t_(1); X_int_ = X1_ + t1_ * d1_(1); Y_int_ = Y1_ + t1_ * d1_(2); success_ = true; end
Summary Forward computation (distance+azimuth) is straightforward—watch units and azimuth convention. Two-bearing intersection requires solving a small linear system; avoid near-parallel bearings. Always perform field checks and use adjustments when multiple observations exist.
Further Reading & References Surveying textbooks on plane coordinate computations and triangulation. National mapping agency manuals for coordinate conventions and grid/UTM handling. MATLAB documentation for trigonometric functions and numeric linear algebra.