![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 25.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jest sobie baza miejscowości. Chcę żeby mi zwróciła tylko te które wpisują się jakiś okrąg.
Powiedzcie mi czemu przy takim zapytaniu
dostaję elipsę zamiast okręgu ? ![]() ![]() 0.013994 to nieistotny współczynnik 19 - długość geograficzna środka okręgu 51 - szerokosc geograficzna środka okręgu |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Pewnie dlatego, że Ziemia nie jest płaska i nie jest możliwe rozwinięcie powierzchni elipsoidy w płaszczyznę bez zniekształceń.
Jeśli punkty które pobierzesz z bazy umieścisz na obrazku zamiast na mapie to powinny ułożyć się w koło. -------------------- Jeśli ten post pomógł to kliknij przycisk
![]() Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 25.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Współrzędne to wspórzędne, traktuj je jak układ kartezjański płaski. Kula ziemska ma tak wielki promien ze na przestrzeni kilkudziesięciu km nie ma to najmniejszego znaczenia. Sprawdź sobie. A pozatym jeśli by się coś miało deformować to by się zdeformowało symetrycznie, przecież to kula !.
Podejrzewam ze coś ze wzorem nawaliłem itp. ale nie przychodzi mi nic do głowy. Równanie koła to przecież ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Ziemia nie jest kulą, przy czym faktycznie jest do niej na tyle podobna, że przy relatywnie małych odległościach nie ma to większego znaczenia.
2. Różne rodzaje map dają różnego rodzaju przekłamania i są one bardzo wyraźne, więc nie do końca można sobie pozwolić na kompletne olanie tego faktu. 3. Współrzędnych geograficznych nie można traktować jako układu kartezjańskiego na powierzchni płaskiej. 4. http://www.movable-type.co.uk/scripts/latlong-db.html 5. W pow. artykule zobaczysz też bardzo ważną rzecz, mianowicie najpierw powinieneś wybrać elementy o współrzędnych znajdujących się w obrębie kwadratu opisanego na Twoim kole, a dopiero później spośród nich wybrać te znajdujące się w okręgu. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 25.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak, juz odsiewałem wstępnie dane za pomocą definiowania kwadratu a później w nim koła. To ma jedynie wpływ na szybkość zapytania ale dane dalej są błędne.
Dodam jeszcze ze współrzędne są przechowywane w polach typu numeric. Ten post edytował m72 22.06.2014, 18:56:49 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ale zauważyłeś że tam masz zupełnie inne wzory? Typ kolumny nie ma większego znaczenia, ważne jest to czy współrzędne są w zakresie od -180 do +180.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
ja korzystam z takiej funkcji
jako dwa pierwsze parametry podaj współrzędne koła, dwa kolejne to punk "do sprawdzenia" ,a ostatni parametr to jednostka odległości(K - kilometry, wszytko inne - mile) czyli np.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 25.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Graficzne przedstawienie problemu
![]() ![]() załatwiłem problem współczynnikami "prostującymi" elipsę ("A" i "B"). $pytanie=mysqli_query($polaczenie,"select miasto, dlugosc, szerokosc from miasta where (POW(A*(dlugosc-19),2)+POW(B*(szerokosc-51),2))<POW(($r*0.013994),2) "); Już prawie działa, problem jest w tym ze dla północy i południa Polski te współczynniki lekko się muszą zmieniać ale coś wykombinuję i jak się uda to tutaj zamieszczę rozwiązanie. Koledzy dzięki za rady. Próbowałem do tematu podejść w sposób ściśle matematynczy ale uznałem że to jest przerost formy nad treścią tzn, ze nie ma co zaprzęgać bazy do liczenia arkustangensów i innych sinusów tylko po to żeby mniej więcej trafić w miejscowość na mapie ![]() Ok, może rozwiązenie jest montypajtonowskie ale za to działa i jest b.proste ! ![]()
Wprowadziłem współczynnik doświadczalny który się zmienia liniowo w funkcji szerokości geograficznej y=-0.02315*szerokosc+2.158 Poniżej zrzuty dla Rzeszowa i Gdańska ![]() ![]() Dokładność w zupełności wystarczająca ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 01:41 |