MySQL dice en los documentos para ST_Distance_Sphere
Los cálculos utilizan una tierra esférica y un radio configurable. El argumento del radio opcional debe darse en metros. Si se omite, el radio predeterminado es de 6.370.986 metros. Si el argumento del radio está presente pero no es positivo,
ER_WRONG_ARGUMENTS
se produce un error.
PostGIS dice en los documentos de ST_Distance_Sphere
, (aunque los documentos ya no son precisos )
Utiliza una tierra esférica y radio de 6370986 metros.
¿De dónde obtuvieron los 6,370,986 metros predeterminados? WGS84 dice que el radio del eje mayor es de 6.378.137,0 m. PostGIS que ahora usa un Radio promedio esencialmente usa 6371008.
Mirando el código
#define WGS84_MAJOR_AXIS 6378137.0
#define WGS84_INVERSE_FLATTENING 298.257223563
#define WGS84_MINOR_AXIS (WGS84_MAJOR_AXIS - WGS84_MAJOR_AXIS / WGS84_INVERSE_FLATTENING)
#define WGS84_RADIUS ((2.0 * WGS84_MAJOR_AXIS + WGS84_MINOR_AXIS ) / 3.0)
eso significa
-- SELECT 6378137.0 - 6378137.0 / 298.257223563;
WGS84_MINOR_AXIS = 6356752.314245179498
-- SELECT ( 2.0 * 6378137.0 + ( 6378137.0 - 6378137.0 / 298.257223563) ) / 3.0;
WGS84_RADIUS = 6371008.771415059833
Las versiones más nuevas son mucho menos eficientes, más complejas y usan Pro4j, pero parecen hacer lo mismo.
¿De dónde viene el 6370986?
(2*minorAxis+majorAxis)/3
... aunque ese valor para WGS84 todavía es unos metros más grande (6,371,008.771)