Earth's radius is a function of latitude. The radius of Earth at the equator is approximately 6378137 m, using the WGS84 ellipsoid. Earth can be thought of as a flattened oblate ellipsoid, with a larger radius at the pole than at the equator. Newton first discussed the flattening of Earth and estimated a value of 1/230. The magnitude of flattening, $f$ , is now very well determined from observing artificial satellite orbits around Earth, and is fixed for the WGS84 ellipsoid as $$f = 1/298.257223563$$ another way to write the flattening is $$f = \frac{R_{equator} - R_{pole}}{R_{equator}}$$ where,
A graph of the change in Earth's radius with latitude:
This graph is created using a gnuplot script:
# command line USAGE: gnuplot earth_shape.gnu
reset
set termoption dash
#equatorial radius (m), WGS84
Re = 6378137.0
#flattening
f = 1/298.25722356
#radius in km
r(x) = Re * (1-f*sin(x)*sin(x)) / 1000.0
# Axes label
set xlabel 'Latitude '
set ylabel 'Earth Radius (km)'
# Axes ranges
set xrange [-pi/2:pi/2]
set yrange [6350:6380]
# Axes tics
set xtics ('90 S' -pi/2, '45 S' -pi/4, 0, '45 N' pi/4, '90 N' pi/2 )
set ytics 5
set tics scale 0.75
set style fill transparent solid 0.15
set key Left
plot r(x) with filledcurve y1=0 lt rgb "gray0" notitle
set term pdf enhanced dashed
set output "Earth_radius.pdf"
replot
The following perl code is a function that returns the value of Earth's radius, in meters, for the GRS80 ellipsoid. The function requires the geodetic latitude in decimal degrees, as input, and returns the radius. For different ellipsoids, the equatorial radius and polar radius must be changed.
########################################################################################################
# subroutine to calculate radius of Earth
# with respect to a reference ellipsoid
# as a function of latitude
# (used by subroutine bullard_correction_a_b)
#
# input: geodetic latitude in decimal degrees
# output: Earth radius in meters
########################################################################################################
sub earth_radius ($) {
my $latitude=shift;
# convert latitude to radians
my $pi = 3.1415926;
my $latrad = $latitude*$pi/180.0;
my $re = 6378137.0; #equatorial earth radius (meters)
my $rp = 6356752.3141; #polar earth radius (meters)
my $earth_rad = $re*1.0/(sqrt(1.0 +(($re**2 - $rp**2)/$rp**2) * (sin($latrad))**2));
return $earth_rad;
}