MySQL dice nei documenti per ST_Distance_Sphere
I calcoli utilizzano una terra sferica e un raggio configurabile. L'argomento facoltativo del raggio dovrebbe essere espresso in metri. Se omesso, il raggio predefinito è 6.370.986 metri. Se l'argomento raggio è presente ma non positivo, si
ER_WRONG_ARGUMENTS
verifica un errore.
PostGIS dice nei documenti di ST_Distance_Sphere
(anche se i documenti non sono più precisi )
Utilizza una terra sferica e un raggio di 6370986 metri.
Da dove hanno preso i 6.370.986 metri di default? WGS84 afferma che il raggio dell'asse maggiore è 6.378.137,0 m. PostGIS che ora utilizza un raggio medio utilizza essenzialmente 6371008.
Guardando il codice
#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)
questo 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
Le versioni più recenti sono molto meno efficienti, più complesse e usano Pro4j ma sembrano fare la stessa cosa.
Da dove viene 6370986?
(2*minorAxis+majorAxis)/3
... sebbene quel valore per WGS84 sia ancora di qualche metro più grande (6.371.008.771)