2009-12-13 18 views
17

के त्रिज्या में है या नहीं, मान लीजिए कि मेरे पास पंक्तियों की एक सारणी है जिसमें निर्देशांक होते हैं।निर्धारित करें कि एक समन्वय

किसी अन्य समन्वय के त्रिज्या में समन्वय की पंक्तियों को खींचने का सबसे अच्छा तरीका क्या होगा?

मेरे सवाल को आसान बनाने के लिए, मैं निम्न उदाहरण दे रहा हूँ:

Table like: 
Columns: Latitude, Longitude. 
Row1: 23.44444 24.55555 
Row2: 32.44444 28.22222 
Row3: 35.11111 32.12345 

एक एसक्यूएल बयान में, मैं कैसे निर्देशांक कि उदाहरण के लिए Row3 के दायरे में हैं की पंक्तियों मिलता है?

उत्तर

29

यह post दिखाता है कि SQL सर्वर में यह कैसे करें।

और यहाँ कैसे MySQL में यह करने के लिए है:

SELECT ((ACOS(SIN($lat * PI()/180) * SIN(lat * PI()/180) + 
     COS($lat * PI()/180) * COS(lat * PI()/180) * COS(($lon - lon) * 
     PI()/180)) * 180/PI()) * 60 * 1.1515) AS distance 
FROM members 
HAVING distance<='10' ORDER BY distance ASC 
+0

धन्यवाद, मैं इसे एक्सेस डेटाबेस में कैसे उपयोग कर सकता हूं? –

+0

जहां तक ​​मुझे पता है, आप इस प्रकार के फ़ंक्शन को एक्सेस डेटाबेस में नहीं बना सकते हैं। आपको दूसरे दृष्टिकोण की कोशिश करनी चाहिए। (कुछ संशोधनों की आवश्यकता होगी। मेरा मानना ​​है कि एक्सेस में पीआई() फ़ंक्शन नहीं है, उदाहरण के लिए – jbochi

+0

क्या यह मील या किलोमीटर में है? – Pentium10

0

क्या आप के दायरे में से क्या मतलब है? क्या आप दूरी पर गुजरना चाहते हैं, 5 मील कहें, और पंक्तियों के 5 मील के भीतर सभी पंक्तियों को ढूंढें?

बाहर तो http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

+0

हां, मैं किलोमीटर का उपयोग कर रहा हूं लेकिन आपको यह विचार मिला। बात यह है कि मुझे इसे एक्सेस डीबी के लिए चाहिए। –

+0

एक वीबीए फ़ंक्शन का उपयोग करें, अनुकूलित करने के लिए वहां बहुत सारे Googleable कोड स्निपेट हैं। –

1

दूरी सूत्र की तरह लग रहा है, तो चेक यह है:

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) + 
         cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi/180) 
       ) * 180/pi) 

जहां Y और Z - प्रत्येक पंक्ति आप whant का परीक्षण करने के बिंदु, और y और z कर रहे हैं - अंक हैं उदाहरण पंक्ति का। इसके lon और lat

  1. तालिका में प्रत्येक पंक्ति का चयन करें और प्राप्त करें:

    ताकि आप ऐसी बात कर सकता है।

  2. this से क्वेरी लागू होते हैं, डेटा प्रपत्र बिंदु 1.

को $lon और $lat बदलते मैं नहीं जानता कि कैसे पहुँच में यह सुनिश्चित करने के लिए। लेकिन इस तरह धीमी गति के रूप में है।

संबंधित मुद्दे