Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] promień (km) na zakres koordynatów (długość szerokośc geograficzna)
Forum PHP.pl > Forum > PHP
neverever
Witajcie, może nie ten dział ale nie wiem czy jest lepszy na to...

Do rzeczy.
"Mam" bardzo dużą bazę punktów geograficznych w postaci: name, lat, long ...
teraz muszę wybrać z tej bazy wszystkie punkty znajdujące się w zadanym promieniu od podanego.
tj. np. wszystkie w promieniu 25km od punktu x,y

Rzecz jasna, by wybrać je z bazy trza by jakoś wyliczyć zakresy długości i szerokosci geograficznej dla zadanego punktu i promienia ...czyli że np dla punktu:
32.9697, -96.80322 dla promienia 25km będzie zakres lat0-lat1, long0-long1

Mam nadzieję że jasno wyjaśniłem...

Jak coś takiego osiągnąć? ...może ktoś ma odpowiedni kod?
domis86
O stary. Podstawówka się kłania. Słyszałeś o twierdzeniu Pitagorasa? snitch.gif

aKfradat + bKfadrat = cKfadrat

czyli

Pierwiastek(aKfradat + bKfadrat) = c


a Ciebie interesują punkty spelniające nierówność:
Pierwiastek(xKfradat +yKfadrat) < r

gdzie r moze byc np 25
aarambo.gif


--
kfadrat nie moge laugh.gif

~kwiateusz
php programmer
Szkielet rozwiązania

  1. <?php
  2. function ZnajdźWPromieniu(punkt,promień,tablica_wszystkich_punktów){
  3.  
  4. foreach (tablica_wszystkich_punktów as jeden_punkt) {
  5. if (prommień >= JakaOdległośćPitagoras(punkt,jeden_punkt) )
  6.  tablica_wyników[] = jeden_punkt;
  7. return tablica_wyników;
  8.  
  9. }
  10.  
  11. }
  12. ?>
user2
Niestety jesteście w błędzie. Przyjmujecie Ziemię jakby była płaska, a nie jest biggrin.gif

Ostatnio robiłem prawie identyczny skrypt i okazało się, że Pitagoras nie zdaje egzaminu, bo to są współrzędne sferyczne, a nie "kfadratowe" smile.gif

Najlepiej podam linka: http://www.weberdev.com/get_example.php3?c...8&mode=text

Tam jest pięknie wyjaśnione jak się liczy odległości po współrzędnych geograficznych.
domis86
No racja, ale Pitagoras jest dobry dla małych odległosci -> powiedzmy ~1000km biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.