Muszę znaleźć algorytm lub metodę, która może wykryć latitude
longitude
punkty odstające na trajektorii podczas przetwarzania końcowego , które można następnie naprawić (przywrócić na ścieżkę trajektorii na podstawie jej sąsiadów).
Jako przykład rodzaju punktów odstających, które chciałbym wykryć i naprawić, załączam obraz przedstawiający:
Próbowałem użyć bezzapachowego filtra Kalmana, aby jak najlepiej wygładzić dane, ale wydaje się, że nie działa to wystarczająco skutecznie dla bardziej ekstremalnych wartości odstających (surowe dane w kolorze niebieskim, wygładzone dane w kolorze czerwonym):
Mój UKF może nie zostać poprawnie skalibrowany (ale jestem całkiem pewien, że tak jest).
Są to trajektorie pieszych, biegaczy, rowerzystów - ruch napędzany przez człowieka, który może rozpoczynać i zatrzymywać, ale nie może drastycznie zmieniać prędkości ani pozycji tak szybko lub nagle.
Rozwiązanie, które nie opiera się na danych o taktowaniu (i tylko na danych o pozycji) byłoby niezwykle przydatne (ponieważ przetwarzane dane nie zawsze mogą zawierać dane o taktowaniu). Jestem jednak świadomy tego, jak mało prawdopodobne jest istnienie tego rodzaju rozwiązania, dlatego równie chętnie mam jakiekolwiek rozwiązanie!
Idealnie byłoby, gdyby rozwiązanie wykryło wartość odstającą, aby można ją było naprawić, co skutkowałoby poprawioną trajektorią:
Zasoby, które przeszukałem:
Smooth GPS data
- /programming/1134579/smooth-gps-dataCommon GPS and Geospatial Tracking Challenges and Solutions
- http://www.toptal.com/gis/adventures-in-gps-track-analytics-a-geospatial-primer (rozwiązanie wydaje się tracić precyzję danych)Jakiego algorytmu należy użyć, aby usunąć wartości odstające w danych śledzenia?
Algorytm, którego używam.
Jak widać, ostro skręca.
Mam implementację powyższego algorytmu w Pythonie ArcGIS, wykorzystuje on moduł networkx. Daj mi znać, jeśli jest to interesujące, a ja zaktualizuję swoją odpowiedź za pomocą skryptu
AKTUALIZACJA:
źródło
Jednym z pomysłów jest stworzenie skryptu, który wyszczególnia kąty (i być może także długość) każdego segmentu ścieżki. Teraz możesz porównać wartości każdego segmentu z jego bezpośrednimi sąsiadami (i być może także drugimi sąsiadami, aby zwiększyć dokładność) i wybrać wszystkie te punkty, w których wartości przekraczają daną wartość progową. Na koniec po prostu usuń punkty ze swojej ścieżki.
źródło
Warto również przyjrzeć się metodzie Median-5.
Każda współrzędna x (lub y) jest ustawiona na medianę wokół 5 wartości x (lub y) wokół niej w sekwencji (tj. Sama, dwie poprzednie wartości i dwie kolejne wartości).
np. x3 = mediana (x1, x2, x3, x4, x5) y3 = mediana (y1, y2, y3, y4, y5) itd.
Metoda jest szybka i łatwa w użyciu w przypadku przesyłania strumieniowego danych.
źródło
W tym pytaniu / odpowiedziach jest kilka dobrych danych.
Chociaż wszystko zależy od tego, w jaki sposób twoje punkty są skupione na tym, co zadziała / nie zadziała. Trzeba uważać na punkty, które są rozłożone, ale nie na wartości odstające.
źródło
Możesz zaimportować dane do programu Excel lub użyć pand i flag i / lub usunąć wszystkie odległości z poprzedniego punktu, które przekraczają jakiś nierealistyczny próg odległości.
źródło