कभी-कभी ACOS()
. के पैरामीटर दूरी कम होने पर - उस फ़ंक्शन के डोमेन से थोड़ा बाहर - 1 से थोड़ा अधिक हो सकता है। विंसेंटी की वजह से एक बेहतर दूरी का फॉर्मूला उपलब्ध है। यह ATAN2(y,x)
. का उपयोग करता है ACOS()
. के बजाय फ़ंक्शन फ़ंक्शन और इसलिए संख्यात्मक रूप से अधिक स्थिर है।
यही है।
DEGREES(
ATAN2(
SQRT(
POW(COS(RADIANS(lat2))*SIN(RADIANS(lon2-lon1)),2) +
POW(COS(RADIANS(lat1))*SIN(RADIANS(lat2)) -
(SIN(RADIANS(lat1))*COS(RADIANS(lat2)) *
COS(RADIANS(lon2-lon1))) ,2)),
SIN(RADIANS(lat1))*SIN(RADIANS(lat2)) +
COS(RADIANS(lat1))*COS(RADIANS(lat2))*COS(RADIANS(lon2-lon1))))
यह फ़ंक्शन अपना परिणाम डिग्री में देता है। एक डिग्री में 111.045 किमी होते हैं। 60 समुद्री मील। 69 क़ानून मील। तो दूरी प्राप्त करने के लिए उन संख्याओं में से एक से परिणाम गुणा करें। MySQL के लिए एक संग्रहीत-फ़ंक्शन परिभाषा सहित एक और पूर्ण लेखन है, यहां ।
एक अन्य उपाय ISNULL(ACOS(formula), 0.0)
. का उपयोग करना है