Enlem/boylam alanı içindeki tüm kayıtları nasıl sorgulayabilirim?

Dünyanın belirli bir alanında bulunan tüm kayıtları bulabilen bir MySQL sorgusu oluşturmak istiyorum. Her kayıt bir nokta (lat/lon) içerir ve belirtilen alanın sağ üst (lat/lon) ve sol alt (lat/lon) köşelerine sahiptir.

Bu bilgi ile uygun kayıtları nasıl bulabilirim?

3
[table_name] 'ı tanımlayabilir misiniz, ve tablo yapısının çıktısını yayınlayabilir misiniz?
katma yazar p.matsinopoulos, kaynak
Alan basit bir dikdörtgen/kutu DA MÜ? Whetstone bunun için basit bir cevap gönderdi. Daha karmaşıksa, bu dev.mysql.com adresine ihtiyacınız olabilir. /doc/refman/5.0/en/spatial-extensions.html .
katma yazar nafisto, kaynak

2 cevap

LAT1 = MIN (sağ üstteki lat, en altta sol lat)

LAT2 = MAX (sağ üst lat, alt-sol lat)

LON1 = MIN (sağ üstteki sol alt sol)

LON2 = MAX (sağ üstteki sol alt sol)

SELECT fields
FROM points
WHERE lat BETWEEN LAT1 AND LAT2
AND lon BETWEEN LON1 AND LON2

Bu şekilde, Prime Meridian'ı veya ekvatoru kutunuzla geçerseniz sorgu işlenmelidir.

180. meridyeni (ya da antimeriyen) idare etmek için, sağ-lonun sol-lon ile karşılaştırılması gerekir, doğru sayının negatif olup olmadığını ve sol sayının pozitif olup olmadığını kontrol etmelisiniz. Eğer öyleyse, o zaman 180. meridyeni geçtiniz. Sorgunuz daha sonra böyle bir şeye bakmak zorunda kalacaktı:

SELECT fields
FROM points
WHERE lat BETWEEN LAT1 AND LAT2
AND (lon BETWEEN LON1 AND -180 OR lon BETWEEN LON2 AND 180)

Gerçi, gerçek kutuplardan birinin üzerinde, gezegenin üstünde veya altında duran bir kutuyu nasıl ele alacağımı düşünmüyorum. =)

6
katma
Bu Anti-Meridyene karşı koyamazdı. Başbakan ve ekvator kolay olanlar. Anti ile nasıl başa çıkıyorsunuz?
katma yazar JT703, kaynak
İyi. Bende seni istemiyorum Düzenleme için teşekkürler.
katma yazar JT703, kaynak
Bu, 0 dereceden fazla boylamı sarar mı? (yani Londra, İngiltere) ya da bunu hallediyor mu?
katma yazar NickG, kaynak
Direklerden birini kaplamak için yapmıyorum. : P
katma yazar Crontab, kaynak
@TreyA: hayır, bahsettiğiniz durumda işe yaramaz, ancak OP bize sadece sağ üst ve alt sol noktaları verdi, bu yüzden büyük olasılıkla sadece bir dikdörtgen.
katma yazar Crontab, kaynak
Güzel cevap ama 4 enlem ve boylamı kullanarak nasıl arama yapabilirim?
katma yazar harsh4u, kaynak
Kutunun boylamında hizalanmadığı takdirde bunun işe yaramayacağını düşünmüyorum (NY şehrinin etrafında bir elmas hayal edin). Genel olarak, bir projeksiyon kullanmanız ve daha sonra noktayı kullanmanız gerekir. çokgen testinde .
katma yazar TreyA, kaynak
Evet, üst ve alt köşelerin verildiğini tekrar okudum. Lat/lon tarafından tanımlanan doğrusal kutuları gördüğümde hala gerginim;)
katma yazar TreyA, kaynak

Sağ kenardan daha küçük ve sol kenardan daha büyük olan ve alt kenardan daha az olan ve üst kenardan daha büyük olan tüm noktalara bakın.

Point at 4,4 and your top right is (5,5) and bottom left is (3,3) - 3<4<5 for x and 3<4<5 for y. You've got a match.

1
katma
Lütfen açıklamalarınızı açıklamıyorsanız, açıklama yapmazsanız kimseye (benim dahil) yardımcı olur.
katma yazar Whetstone, kaynak