2009-12-13 30 views
17

Giả sử tôi có Bảng chứa các tọa độ.Xác định xem một tọa độ có nằm trong bán kính của một số khác

Cách tốt nhất để chỉ kéo các hàng tọa độ nằm trong bán kính của một tọa độ khác?

Để đơn giản hóa câu hỏi của tôi, tôi đưa ra các ví dụ sau:

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

Trong một câu lệnh SQL, làm thế nào để tôi nhận được hàng của tọa độ mà đang ở trong bán kính Row3 ví dụ?

Trả lời

29

Điều này post cho biết cách thực hiện việc này trong SQL Server.

Và đây là làm thế nào để làm điều đó trong 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

Cảm ơn, làm cách nào tôi có thể sử dụng nó trong Cơ sở dữ liệu Access? –

+0

Theo như tôi biết, bạn không thể tạo loại chức năng này trong Cơ sở dữ liệu Access. Bạn nên thử cách tiếp cận thứ hai. (Một số sửa đổi sẽ là cần thiết. Tôi tin rằng truy cập không có một chức năng PI(), ví dụ) – jbochi

+0

Đây có phải là trong dặm hoặc km? – Pentium10

0

Ý anh là gì bởi trong bán kính? Bạn có muốn vượt qua trong một khoảng cách, nói 5 dặm, và tìm thấy tất cả các hàng trong vòng 5 dặm của hàng x?

Kiểm tra này ra nếu có http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

+0

Có, tôi sẽ sử dụng km nhưng bạn có ý tưởng. Điều này là tôi cần nó cho một db truy cập. –

+0

Sử dụng hàm VBA, có rất nhiều đoạn mã có thể googleable ngoài đó để thích nghi. –

1

trông giống như công thức khoảng cách là:

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) 

trong đó Y và Z - là những điểm mỗi hàng bạn muốn thử nghiệm, và y và z - là điểm của hàng ví dụ.

vì vậy bạn có thể làm một điều như vậy:

  1. chọn mỗi hàng trong bảng và nhận được nó lonlat.
  2. áp dụng truy vấn từ this, thay đổi $lon$lat mẫu dữ liệu điểm 1.

Tôi không biết làm thế nào để làm điều này trong việc tiếp cận. Nhưng theo cách này thì eo biển chậm.

Các vấn đề liên quan