MySQL บอกในเอกสารสำหรับ ST_Distance_Sphere
การคำนวณใช้ดินทรงกลมและรัศมีที่กำหนดค่าได้ อาร์กิวเมนต์รัศมีที่เป็นทางเลือกควรกำหนดเป็นเมตร หากไม่ระบุค่ารัศมีเริ่มต้นคือ 6,370,986 เมตร หากอาร์กิวเมนต์รัศมีมีอยู่ แต่ไม่เป็นบวก
ER_WRONG_ARGUMENTS
จะเกิดข้อผิดพลาด
PostGISกล่าวว่าในเอกสารของST_Distance_Sphere
(แม้ว่าเอกสารจะไม่ถูกต้องอีกต่อไป )
ใช้โลกทรงกลมและรัศมี 6370986 เมตร
พวกเขาได้รับค่าเริ่มต้น 6,370,986 เมตรจากที่ไหน WGS84กล่าวว่ารัศมีแกนหลักคือ 6,378,137.0 เมตร PostGIS ซึ่งตอนนี้ใช้รัศมีเฉลี่ยโดยพื้นฐานแล้วใช้ 6371008
มองไปที่รหัส
#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)
นั่นหมายความว่า
-- 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
รุ่นที่ใหม่กว่ามีประสิทธิภาพน้อยกว่ามีความซับซ้อนมากขึ้นและใช้ Pro4j แต่ดูเหมือนจะทำในสิ่งเดียวกัน
ยังคงมาจากไหน 6370986
(2*minorAxis+majorAxis)/3
... แม้ว่าค่าที่สำหรับ WGS84 ยังคงเป็นไม่กี่เมตรขนาดใหญ่ (6,371,008.771)