The Shape of Earth

Equations and a perl code for calculating the radius of Earth as a function of latitude

Radius and Latitude

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,

  • $R_{equator}$ is the radius of Earth at the equator, approximately 6378137 m
  • $R_{pole}$ is the radius of Earth at the pole, approximately 6356752 m
The radius of Earth, $R_E$, at a given latitude, $\phi$, is given by the equation, $R_E = R_{equator} (1 - f sin^2 \phi)$.

[Top]

Plotting data with gnuplot

A graph of the change in Earth's radius with latitude:

shape

This graph is created using a gnuplot script:

gnuplot script: earth_shape.gnu

# 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

[Top]

Calculating Earth's radius with perl

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.

perl script: earth_radius.pl

########################################################################################################
# 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;
}