MySQL mówi w dokumentacji dla ST_Distance_Sphere
Obliczenia wykorzystują kulistą ziemię i konfigurowalny promień. Opcjonalny argument promienia powinien być podany w metrach. Jeśli zostanie pominięty, domyślny promień wynosi 6370986 metrów. Jeśli argument promienia jest obecny, ale nie dodatni,
ER_WRONG_ARGUMENTS
pojawia się błąd.
PostGIS mówi w dokumentach ST_Distance_Sphere
(choć dokumenty nie są już dokładne )
Wykorzystuje sferyczną ziemię i promień 6370986 metrów.
Skąd wzięli domyślnie 6370986 metrów? WGS84 twierdzi, że promień osi głównej wynosi 6,378,137,0 m. PostGIS, który teraz używa średniego promienia, zasadniczo używa 6371008.
Patrząc na kod
#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)
to znaczy
-- 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
Nowsze wersje są znacznie mniej wydajne, bardziej złożone i używają Pro4j, ale wydają się robić to samo.
Nadal skąd pochodzi 6370986?
(2*minorAxis+majorAxis)/3
... chociaż ta wartość dla WGS84 jest wciąż kilka metrów większa (6 371 008,771)