दूरी की गणना करना कम्प्यूटेशनल रूप से महंगा है, जैसा कि अन्य ने कहा है। विशाल डेटासेट लौटाना भी एक बहुत अच्छा विचार नहीं है - विशेष रूप से यह देखते हुए कि PHP प्रदर्शन में उतना अच्छा नहीं है।
मैं एक अनुमानी का उपयोग करूंगा, जैसे कि साधारण जोड़ और घटाव के साथ दूरी का अनुमान लगाना।
बस उस सीमा के भीतर घटनाओं के साथ डीबी खोजें (प्रभावी रूप से एक वर्ग के बजाय एक वर्ग), और फिर आप PHP वाले लोगों पर काम कर सकते हैं।
संपादित करें :यहाँ एक विकल्प है; एक अनुमान जो कम्प्यूटेशनल रूप से कम खर्चीला है:
मील में अनुमानित दूरी:
sqrt(x * x + y * y)
where x = 69.1 * (lat2 - lat1)
and y = 53.0 * (lon2 - lon1)
आप कोसाइन गणित फ़ंक्शन को जोड़कर इस अनुमानित दूरी की गणना की सटीकता में सुधार कर सकते हैं:
मीलों में बेहतर अनुमानित दूरी:
sqrt(x * x + y * y)
where x = 69.1 * (lat2 - lat1)
and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3)
स्रोत:http://www.meridianworlddata.com/Distance-Calculation.asp
2 संपादित करें :मैंने बेतरतीब ढंग से जेनरेट किए गए डेटासेट के साथ परीक्षणों का एक समूह चलाया।
- 3 एल्गोरिदम के लिए सटीकता में अंतर न्यूनतम है, खासकर कम दूरी पर
- सबसे धीमा एल्गोरिथम (ट्रिग फ़ंक्शन के पूरे समूह के साथ) अन्य दो की तुलना में 4x धीमा है।
निश्चित रूप से इसके लायक नहीं है। बस एक अनुमान के साथ जाएं।
कोड यहाँ है:http://pastebin.org/424186