PostGIS में निकटता खोज के लिए ST_DWithin और ST_Distance में क्या अंतर है?


14

मेरे पास एक तालिका है जो एक ज्यामिति क्षेत्र में संग्रहीत अक्षांश / देशांतर निर्देशांक के साथ एक तालिका में संग्रहीत है। मैं एक उपयोगकर्ता द्वारा संदर्भित संदर्भ बिंदु के पास सभी रिकॉर्ड ढूंढना चाहता हूं। नोट "पास" शायद 100 किमी से कम का मतलब है (संभवतः और भी छोटा)।

सबसे अधिक उदाहरण मैं उपयोग देखता हूं ST_DWithin। क्या कोई कारण है जो आप उपयोग नहीं कर सकते हैं ST_Distance? इसका उपयोग करने ST_DWithinऔर ST_Distanceकरने के बीच क्या अंतर है ?

उदाहरण के लिए:

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1)

बनाम

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

जवाबों:


15

ST_Distance एक गणना है जिसे हर पंक्ति में निष्पादित और मूल्यांकन किया जाना चाहिए। ST_DWithin एक इंडेक्स का उपयोग कर सकता है, इसलिए इसके बहुत तेज होने की संभावना है ।


4
इसके अलावा इसे खोजने में कामयाब रहे जो बहुत कुछ इसी तरह कहता है: postgis.net/2013/08/26/tip_ST_DWithin
उपयोगकर्ता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.