Belirlenmesi eğer bir küre örtüşme üzerinde bir enlem-uzun daire ve daire

1 Cevap php

Ben databse gibi sunucu betik dili ve MySQL PHP kullanırken Geo Proximity Arama yeteneği ile bir uygulama oluşturma.

Bir durum düşünün:

Biz ilgili nesneler ile gelişmişlerdir enlem ve boylam konumları olan bazı nesneler belirledik nerede. Biz örneğin MySQL sorgusu kullanılarak radius / aralık Withing yalan nesneleri alıyorsanız KM menzil / yarıçap ile birlikte ülke ve / veya şehir gibi yer bilgilerinizi belirlenmesi hakkında:

SELECT [columns] 
FROM [column] 
WHERE 1=1 
AND 3963.191 * 
    ACOS(
    (SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) + 
    (COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) ) 
    <= 10

Yukarıdaki hesaplamalar yeryüzünde ülke / şehir merkez noktasından 10 KM alanı içinde nesneleri verecektir.

Şimdi ben bu 10 KM alanda değil (enlem ve boylam) ile bir nesne olduğunu varsayalım, ama yeryüzünde ülke / şehir merkez noktasından, örneğin 15 KM için. Bu nesne (10 KM alana kadar hizmet veren) hizmet yelpazesi 10 KM vardır.

Ben o nesne (ayrı ülke / şehir merkezi noktadan 15 KM) servis aralığı 10 KM de aramaya dahil edilmelidir sahip ülke / şehir merkez noktasından 10 KM aralığında nesneleri arıyorum Şimdi eğer soru.

Nasıl mümkün yapabilirsiniz? Ben enlem ülke / şehir merkezi var, uzun koordinatlar, menzil / yarıçap (biz nesneleri bulmak zorunda olduğu) ve teslimat yarıçapı (eg10 KM) ve karşılık gelen koordinatlara sahip olan nesne.

Eğer nasıl yapılacağını bana rehberlik eder PHP, MySQL kullanarak?

1 Cevap

Use MySQL spatial extensions http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html

Sadece verilen ile kesişir diğer çevrelerin tanımlamak istiyorsanız, diğer yandan, onlar çemberin merkezleri arasındaki mesafe yarıçapı toplamı daha az olduğu için tüm bu olurdu. (x0 ,y0 ,r0 orijinal nokta ve aralık üçlü tarafından verilen olduğunu varsayarak başka deyişle, ), you need all (xn {[(4)] } ,rn ) hangi

√ ((x0 - xn )² + (y0 - yn )²) ≤ r0 + rn