बिंदुओं को खोजने के लिए एक बफर बनाना एक निश्चित संख्या है क्योंकि (1) बफर का प्रतिनिधित्व करने वाली ज्यामिति बनाने का ओवरहेड, और (2) पॉइंट-इन-पॉलीगॉन गणना एक साधारण दूरी की गणना की तुलना में बहुत कम कुशल है।
आप स्पष्ट रूप से (देशांतर, अक्षांश) डेटा के साथ काम कर रहे हैं, इसलिए आपको इसे एक उपयुक्त कार्टेशियन समन्वय प्रणाली में परिवर्तित करना चाहिए, जिसकी माप की इकाई 10,000 की दूरी के समान हो। यदि वह दूरी मीटर में है, तो आप तालिका से बिंदु को geography
. पर भी डाल सकते हैं और सीधे (लंबे, अक्षांश) निर्देशांक पर गणना करें। चूंकि आप केवल उन बिंदुओं की पहचान करना चाहते हैं जो निर्दिष्ट दूरी के भीतर हैं, आप ST_DWithin()
समारोह
अतिरिक्त गति के लिए गोले पर गणना के साथ (बहुत उच्च अक्षांशों पर या बहुत लंबी दूरी पर ऐसा न करें):
SELECT id, point
FROM my_table
WHERE ST_DWithin(point::geography,
ST_GeogFromText('POINT(-116.768347 33.911404)'),
10000, false);