Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porównywanie współrzędnych, Zabawa z Google Maps Api i bazą danych
Master Miko
post
Post #1





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam.

Mam problem z zaprojektowaniem tabeli sql z miejscowościami i ich współrzędnymi. Mogę je zapisywać do bazy danych w dowolnym formacie, ale nie mam pojęcia jak ułożyć te tabele, żeby nie zabić mysql'a.

Problem wygląda tak: posiadam współrzędne punktu (używam Google Maps Api, ale to bez znaczenia) w postaci $x i $y. Teraz chciałbym stworzyć systemik, który podawałby najbliższą miejscowość od tych współrzędnych z tabeli mysql. Powiedzmy szkic tabel wyglądałby tak:


id_dzielnicy | id_miasta | nazwa_dzielnicy | współrzędne x | współrzędne y

id_miasta | nazwa_miasta | dodatkowe opcje np. co do markera (ta tabela mniej istotna

W php mam wartości współrzędnych punktu. ($x i $y)


I teraz problem bo nie wiem, czy tak jest dobrze i nie mam pojęcia jak w sql zabrać się za pytanie, żeby znajdował te najbliższe punkty...

Proszę o pomoc. Jeśli coś niejasne - wyjaśnię.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mosqi83
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 2
Dołączył: 20.02.2007
Skąd: Opole

Ostrzeżenie: (0%)
-----


Obliczając odległość pomiędzy dwoma punktami leżącymi na powierzchni Ziemi nie możemy traktować jej jako układu współrzędnych XY, gdyż Ziemia jest kulista. Poczytaj o Ortodromie. Polecam również Calculate distance, bearing and more between two Latitude/Longitude points

Przykładowe zapytanie o znacznie zmniejszonym błędzie pomiaru:

  1. SELECT latitude, longitude, acos((sin(pi()*?/180)*sin(pi()*latitude/180))+(cos(pi()*?/180)*cos(pi()*latitude/180)*cos(pi()*longitude/180-pi()*?/180)))*6378137 AS "Dystans [m]"
  2. FROM wspolrzedne ORDER BY acos((sin(pi()*?/180)*sin(pi()*latitude/180))+(cos(pi()*?/180)*cos(pi()*latitude/180)*cos(pi()*longitude/180-pi()*?/180)))*6378137
  3. LIMIT 1


W miejsce znaków zapytania w zapytaniu wstawić należy współrzędne geograficzne punktu wokół którego szukamy punktów odpowiednio:
szerokość, szerokość, długość, szerokość, szerokość, długość.
Zapytanie wyświetla najbliższy punkt do podanego i odległość między nimi w metrach (6378137 to promień Ziemi w metrach). Obliczanie odległości jako ortodromy w tym przypadku znacznie zmniejszy błąd pomiaru. Są jeszcze dokładniejsze metody, ale ta powinna w zupełności wystarczyć. Błąd w tej metodzie może wynieść max. 30 metrów.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:37