Mam surowe lokalizacje GPS dla śladu i muszę uzyskać maksymalną prędkość. Proste metody (oblicz prędkość między 2 punktami, weź maksimum) dadzą bezsensowne duże liczby z powodu niedokładności GPS, punkt skacze. Czy możesz zasugerować dobry gotowy algorytm, aby rozwiązać ten problem?
gps
movement-data
JaakL
źródło
źródło
Odpowiedzi:
Oczywiście, aby uzyskać prędkość, musisz mieć czas . W ten sposób możesz uporządkować punkty według czasu w arkuszu kalkulacyjnym, takim jak moda, z kolumnami {Czas, X, Y}, zwiększając czas.
Oto przykład, w którym moduł GPS prawie zakończył obwód przeciwny do ruchu wskazówek zegara:
Punkty te nie zostały uzyskane w równych odstępach czasu. Dlatego z samej mapy nie można oszacować prędkości. (Aby jednak pomóc ci w wizualizacji tej podróży, upewniłem się, że zbieram wartości GPS w prawie równych odstępach, abyś mógł zobaczyć, że podróż rozpoczęła się szybko i spowolniła w dwóch pośrednich punktach i na końcu.)
Ponieważ interesuje Cię prędkość, oblicz odległości między kolejnymi rzędami, a także różnice czasowe. Dzielenie odległości przez różnice czasowe daje natychmiastowe oszacowania prędkości. To wszystko. Spójrzmy na wykres tych szacunków w funkcji czasu:
Czerwone punkty kreślą prędkości, podczas gdy szara krzywa jest prymitywnie gładka, wyłącznie po to, aby poprowadzić oko. Czas maksymalnej prędkości i sama maksymalna prędkość są czytelne z wykresu i łatwo uzyskane z danych do tej pory, jeśli używasz arkusza kalkulacyjnego lub prostych funkcji podsumowania danych w GIS. Jednak te szacunki prędkości są podejrzane, ponieważ punkty GPS wyraźnie zawierają w sobie pewien błąd pomiaru.
Jednym ze sposobów radzenia sobie z błędem pomiaru jest zgromadzenie odległości między wieloma przedziałami czasowymi i wykorzystanie ich do oszacowania czasów. Na przykład, jeśli wcześniej obliczone dane {Różnica czasu, Odległość} to
następnie uzyskuje się czasy, które upłynęły, i całkowite odległości w dwóch przedziałach czasowych poprzez dodanie każdej pary kolejnych rzędów:
Przelicz prędkości dla skumulowanych czasów i odległości.
Obliczenia można przeprowadzić dla dowolnej liczby okresów, uzyskując coraz płynniejsze i bardziej niezawodne wykresy, kosztem uśrednienia szacunków prędkości w dłuższych okresach. Oto wykresy tych samych danych obliczonych odpowiednio dla 3 i 5 okresów:
Zauważ, w jaki sposób maksymalna prędkość spada wraz z wygładzaniem. To zawsze się zdarza. Nie ma jednoznacznej poprawnej odpowiedzi: stopień wygładzenia zależy od zmienności pomiarów i przedziałów czasowych, które chcesz oszacować prędkości. W tym przykładzie możesz zgłosić maksymalną prędkość nawet do 2,5 (w oparciu o kolejne punkty GPS), ale byłoby to nieco zawodne z powodu błędów w lokalizacjach GPS. Możesz zgłosić maksymalną prędkość tak niską jak 2,1 w oparciu o pięciomiesięczne wygładzenie.
Jest to prosta metoda, ale niekoniecznie najlepsza. Jeśli rozkładamy błąd lokalizacji GPS na komponent wzdłuż ścieżki i inny komponent prostopadły do ścieżki, widzimy, że komponenty wzdłuż ścieżki nie wpływają na oszacowanie całkowitej pokonanej odległości (pod warunkiem, że ścieżka jest wystarczająco dobrze próbkowana: to znaczy, że nie „skracaj kątów”). Składniki prostopadłe do ścieżki zwiększają siępozorne odległości. To potencjalnie przesuwa szacunek w górę. Jednak gdy typowa odległość między odczytami GPS jest duża w porównaniu z typowym błędem odległości, odchylenie jest małe i prawdopodobnie jest kompensowane przez małe poruszenia na ścieżce, które nie są przechwytywane przez sekwencję GPS (to znaczy, niektóre cięcia narożne są zawsze zrobione). Dlatego prawdopodobnie nie warto opracowywać bardziej wyrafinowanego estymatora, aby poradzić sobie z tymi nieodłącznymi tendencjami, chyba że częstotliwość próbkowania GPS jest bardzo niska w porównaniu z częstotliwością, z jaką ścieżka „porusza się” lub błąd pomiaru GPS jest duży.
Dla przypomnienia możemy pokazać prawdziwy, poprawny wynik, ponieważ są to dane symulowane:
Porównanie tego z poprzednimi wykresami pokazuje, że w tym konkretnym przypadku maksimum prędkości surowych zawyżało prawdziwe maksimum, podczas gdy maksimum pięciokresowych prędkości było zbyt niskie.
Zasadniczo, gdy punkty GPS są zbierane z wysoką częstotliwością, maksymalna prędkość początkowa będzie prawdopodobnie zbyt wysoka: dąży ona do przeszacowania prawdziwego maksimum. Powiedzenie czegoś więcej w jakimkolwiek praktycznym przypadku wymagałoby pełniejszej analizy statystycznej natury i wielkości błędów GPS, częstotliwości zbierania GPS oraz krętości leżącej u podstaw ścieżki.
źródło
To nie jest gotowy skrypt ani algorytm. Co zrobiłem na poniższym obrazku pokazującym średnią prędkość (w km / h):
r.neighbors
aby uzyskać średnią prędkość dla określonego okna rastrowego.źródło
r.neighbors
, otrzymuję średnią prędkość.Ponieważ dane GPS są niedokładne, oszacowanie maksymalnej prędkości będzie możliwe.
Możesz spróbować to obliczyć, obliczając prędkość nie na segmentach, ale na poliliniach (średnia prędkość), aby zminimalizować wpływ niedokładności.
Czy próbowałeś najpierw wyczyścić swoje dane (na przykład Douglas-Peucker), aby zachować tylko najistotniejsze punkty?
źródło