quankim277 / geomodel

Automatically exported from code.google.com/p/geomodel
0 stars 0 forks source link

Spherical Approximation of Earth's Radius #34

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
`geomath.py` defines its spherical approximation of Earth's radius as 6378135 
meters (6378.135 km).

According to Wikipedia, the above radius is the actual equatorial radius of the 
Earth (per the WGS-84 ellipsoid model). 

It seem more appropriate for `geomath.distance()` to use an average radius 
value, since the above applies only at the equator, where it is a maximum 
value. The IUGG (according to Wikipedia) defines the mean radius of the earth 
as 6371.009 km. 

http://en.wikipedia.org/wiki/Earth_radius#Mean_radii

Therefore, I propose changing `geomath.py` to instead define:

`RADIUS = 6371009`

(However, there are several different ways to calculate "mean radius" of the 
Earth; I'm not 100% certain that this one is the "most correct" approximation 
for Great Circle calculations, but it is definitely "more correct" than the 
equatorial radius.)

Original issue reported on code.google.com by david.a....@gmail.com on 7 Mar 2012 at 5:39

GoogleCodeExporter commented 8 years ago
“6371” is the "surface area" radius, based on there being three radii 
boundaries:  Two equatorial, a_x and a_y, and the polar, b——one for each 
axis.  This gives an approximation of “(2*a + b)/3”.
However, for a “great circle” circumference approximation, the boundaries 
are the meridional circumference and equator.
For the meridional circumference, we will add a third, mean equatorial radius, 
a_m, (a_x*a_y)^.5, giving an approximate, mean meridional radius of Mr ≈ 
.5*(a_m + b).
The equatorial circumference——while considered spherical for Earth and 
other spheroids——can be elliptical and therefore requires its 
“approximation”:  a_e ≈ .5*(a_x + a_y).

Thus the great circle radius approximation is

   GCr ≈ .5*(Mr + a_e) = .5*(.5*(a_m + b) + .5*(a_x + a_y)),
                      = .25*(a_x + a_m + a_y + b),
                      = .25*(3*a + b);

Given the particular dynamics involved, squaring-rooting gives a closer 
approximation of the circumferences, with the “ellipsoidal quadratic mean” 
(or just “triaxial quadratic mean”), being the better choice:

   GCr ≈ Qr = (.25*(3*a^2 + b^2))^.5;

Both ways give an approximate GCr of 6372.8 km, which is about as precise as 
one can get for a universal value, given the variation in the different 
ellipsoid models of Earth and the different ways the circumferences can be 
differentiated.
There is a wiki article that gives a more in-depth analysis of the concept:

          http://math.wikia.com/wiki/Ellipsoidal_quadratic_mean_radius

Therefore, my suggested valuation for “geomath.py” is:  RADIUS = 6372800

Original comment by Kaimbri...@gmail.com on 7 Jun 2013 at 3:12

GoogleCodeExporter commented 8 years ago
There's an error in the analysis in

http://math.wikia.com/wiki/Ellipsoidal_quadratic_mean_radius

(the way the vertex latitude was sampled was wrong).  When this is corrected 
the mean radius becomes R1 = (2*a + b)/3 the IUGG recommended value.  So I 
propose RADIUS = 6371009.

Original comment by charles....@gmail.com on 12 Jun 2013 at 9:49

GoogleCodeExporter commented 8 years ago
You might also want to consider abandoning the spherical approximation and 
solving for the geodesic distance using

http://pypi.python.org/pypi/geographiclib

Original comment by charles....@gmail.com on 12 Jun 2013 at 10:20