2009-12-13 18 views
17

yarıçapında olup olmadığını belirle Koordinatlar içeren bir Satır Tablosu var.Bir koordinatın başka bir

Yalnızca başka bir koordinatın yarıçapında bulunan koordinat sıralarını çekmenin en iyi yolu ne olurdu? Ben mesela Row3 yarıçapı olan koordinatların satırları nasıl elde edersiniz, bir SQL açıklamada

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

:

sorumu basitleştirmek için

, ben şu örneği veriyorum?

cevap

29

Bu post, SQL Server'da bunun nasıl yapıldığını gösterir. Burada

Ve MySQL bunu yapmak için nasıl:

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

Teşekkürler, Access veritabanında nasıl kullanabilirim? –

+0

Bildiğim kadarıyla, bu tür bir işlevi Access Veritabanında oluşturamazsınız. İkinci yaklaşımı denemelisin. (Bazı değişiklikler gerekli olacaktır. Erişimin bir PI() fonksiyonuna sahip olmadığına inanıyorum), örneğin – jbochi

+0

Mil mi yoksa kilometre mi? – Pentium10

0

sen yarıçapı ne demek istiyorsunuz? Uzakta geçmek ister misin, 5 mil mi, ve satır x'in 5 milindeki tüm satırları mı buldun? üzerinden çok http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

+0

Evet, kilometrelerce kullanıyorum ama fikrin var. Bir şey bir erişim db için ihtiyacım var. –

+0

Bir VBA işlevi kullanın, uyum sağlamak için orada çok sayıda kod parçacıkları vardır. –

1

mesafe formül benziyorsa

ara şudur:

Y ve Z
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) 

- Eğer whant test etmek için, her sıranın noktaları ve y ve z, - noktalarıdır örnek satır.

yüzden böyle bir şey yapabilir:

  1. tablodaki her satırı seçin ve almak onun lon ve lat.
  2. erişmeye bu nasıl bilmiyorum veri formu noktası 1.

için $lon ve $lat değişen this gelen sorgu uygula. Ancak bu yol, boğaz kadar yavaştır.