MySQL nói trong các tài liệu cho ST_Distance_Sphere
Tính toán sử dụng một trái đất hình cầu và bán kính cấu hình. Đối số bán kính tùy chọn nên được đưa ra bằng mét. Nếu bỏ qua, bán kính mặc định là 6.370.986 mét. Nếu đối số bán kính có mặt nhưng không tích cực, sẽ
ER_WRONG_ARGUMENTS
xảy ra lỗi.
PostGIS nói trong các tài liệu của ST_Distance_Sphere
, (mặc dù các tài liệu không còn chính xác nữa )
Sử dụng một trái đất hình cầu và bán kính 6370986 mét.
Họ lấy 6.370.986 mét mặc định từ đâu? WGS84 cho biết bán kính trục chính là 6.378.137.0 m. PostGIS hiện sử dụng Bán kính trung bình về cơ bản sử dụng 6371008.
Nhìn vào mã
#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)
Điều đó có nghĩa là
-- 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
Các phiên bản mới ít hiệu quả hơn, phức tạp hơn và sử dụng Pro4j nhưng dường như chúng cũng làm điều tương tự.
6370986 vẫn đến từ đâu?
(2*minorAxis+majorAxis)/3
... mặc dù giá trị đó đối với WGS84 vẫn lớn hơn vài mét (6.371.008.771)