MySQL dit dans la documentation de ST_Distance_Sphere
Les calculs utilisent une terre sphérique et un rayon configurable. L'argument facultatif du rayon doit être donné en mètres. S'il est omis, le rayon par défaut est de 6 370 986 mètres. Si l'argument radius est présent mais pas positif, une
ER_WRONG_ARGUMENTS
erreur se produit.
PostGIS dit dans les documents de ST_Distance_Sphere
(bien que les documents ne soient plus précis )
Utilise une terre sphérique et un rayon de 6370986 mètres.
D'où ont-ils obtenu les 6 370 986 mètres par défaut? WGS84 indique que le rayon du grand axe est de 6 378 137,0 m. PostGIS qui utilise désormais un rayon moyen utilise essentiellement 6371008.
En regardant le code
#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)
cela signifie
-- 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
Les versions plus récentes sont beaucoup moins efficaces, plus complexes et utilisent Pro4j mais elles semblent faire la même chose.
D'où vient toujours le 6370986?
(2*minorAxis+majorAxis)/3
... bien que cette valeur pour WGS84 soit encore plus grande de quelques mètres (6,371,008.771)