Jak filtrować nieprawidłowe punkty GPS?

11

Mam bazę danych punktów GPS. Nie ma żadnych śladów, tylko punkty. Muszę obliczyć jakąś wartość na każde 100 metrów, ale czasami GPS podał nieprawidłowe współrzędne, które leżą daleko od rzeczywistych punktów GPS, i zamiast obliczać wartości dla małego kwadratu, muszę to obliczyć dla naprawdę dużego prostokątnego obszaru.

Jaki jest najlepszy algorytm do filtrowania błędnych punktów GPS?

Zrobiłem zrzut ekranu, aby zrozumieć:

! [http://content.screencast.com/users/smirnoffs/folders/Jing/media/94624331-db6a-4171-bed9-e2183f953a1d/gps_error.png]

smirnoffs
źródło
1
Jako kryterium wykrycia takich wartości odstających użyłbym małej wielokrotności ruchomej ramki (powiedzmy 10 ostatnich punktów) średniej odległości między punktami.
lynxlynxlynx,
Czy możesz opisać swoją metodę bardziej szczegółowo? Mam bazę punktów, nie są one w żaden sposób sortowane. Zatem odległość może wynosić 2 metry lub 500 metrów. Ale niektóre punkty są bardzo daleko. Zrobiłem zrzut ekranu, aby pomóc Ci zrozumieć
smirnoffs,
2
Widzę. W tym przypadku moje podejście nie jest tak dobre. Zamiast tego obliczyłem najbliższy sąsiadujący punkt dla każdego punktu, a następnie zgoliłem tam wartości odstające.
lynxlynxlynx
2
Drugie podejście sugerowane przez @lynx działałoby dobrze z przykładowymi danymi, szczególnie gdy metoda wykrywania wartości odstających jest dobra. Zobacz opcje dotyczące wartości odstających na naszej stronie statystyk, aby uzyskać opcje. Na przykład wiele kreatywnych (i poprawnych) podejść jest sugerowanych na stronie stats.stackexchange.com/questions/213 .
whuber

Odpowiedzi:

3

Uruchom Anselin Local Moran's I przeciwko punktom i wyrzuć cokolwiek z wynikiem Z poniżej -1,96. To statystyczna metoda lokalizowania przestrzennych wartości odstających. Aby to zrobić, musisz upewnić się, że wszystkie punkty mają wartość związaną z ich przestrzennym położeniem.

Ale sprawdzając narzędzia w 10.1 po komentarzu Whubera, zdaję sobie sprawę, że jeśli korzystasz z ArcGIS 10.1, dostępne jest narzędzie do analizy grupowania, co jest naprawdę tym, co chcesz zrobić.

Myślę, że chciałbyś przeprowadzić analizę grupowania z ograniczeniem przestrzennym triangulacji Delaunaya. Blokada polega na tym, że musisz mieć liczbę grup podziału równą lub większą niż liczba odłączonych grup (jeśli którakolwiek z wartości odstających jest dla siebie naturalnym sąsiadem). W przeciwnym razie wartości odstające bez naturalnych sąsiadów nie wymyślą żadnej grupy na podstawie analizy grupowania.

Na tej podstawie myślę, że triangulacja Delauneya może być źródłem algorytmu filtrującego, ale nie jestem jeszcze pewien.

Kolejna aktualizacja: po wkopaniu do Partition.py, skryptu, który uruchamia narzędzie analizy grupowania, myślę, że można tam użyć algorytmu dla odłączonych grup w połączeniu z częścią NoNeighbors, chociaż mam problem z wykopaniem tej części scenariusz.

blord-castillo
źródło
(-1) Gwarantuje to wyrzucenie około 1 na 40 punktów bez względu na wszystko. Nie jest wskazane stosowanie takiego testu do wykrywania wartości odstających.
whuber
1
Nie jest to prawdą, gdy przeprowadzane są testy czysto przestrzennych wartości odstających - jeśli istnieją wartości przestrzenne. Jeśli nie istnieją przestrzenne wartości odstające, będziesz miał ten problem, ale jeśli tak, to tylko te wartości odstające powinny spaść na tak niski wynik Z. Wszystko zależy od przestrzennego rozmieszczenia punktów.
blord-castillo
1
Prawie: jeśli same wartości odstające tworzą klaster, możesz nie wykryć ich całkowicie. (Rozważmy sytuację, w której zerowe lub ewidentnie złe współrzędne są automatycznie mapowane na (0,0).) Twój komentarz pokazuje, że znalezienie wartości odstających może być trudne i zależy od charakteru wartości odstających: czy może być jedna, czy wiele; jak daleko mogą być; czy potrafią się skupić; itd. Zasadniczo statystyki, które przyjmują założenia dystrybucyjne (takie jak użycie Local Moran's I), nie działają tak dobrze, jak solidne, nieparametryczne statystyki.
whuber
2
Rozważałem konkretny problem teoretyczny, w którym masz „dobre” punkty GPS i masz taką samą liczbę „złych” punktów GPS ułożonych jeden na drugim w odległym rogu obwiedni. Bez znajomości obszaru zainteresowania „dobrymi” punktami nie sądzę, aby można było statystycznie wyodrębnić, który zestaw jest „dobry”, a który zestaw „zły”. Może to być problem, który wymaga ręcznego wyznaczenia obszarów zainteresowania.
blord-castillo
2
Zgadza się: opisałeś dwumodalny rozkład wielowymiarowy. W takich przypadkach zwykle wykonuje się oszacowanie modelu mieszanki lub zastosowanie algorytmu klastrowego. Rezultatem jest wyodrębnienie składników mieszaniny / klastra, ale bez oznaczania żadnego z nich jako „wartości odstających”: obowiązek ten spoczywa na użytkowniku.
whuber
3

Może to pomóc uzyskać listę wartości odstających:

SELECT p1.point_id 
FROM p1 AS points, p2 AS points
WHERE p1.point_id <> p2.point_id AND
ST_Distance(p1.geom, p2.geom) > 10000

Tutaj point_id byłby kluczem podstawowym w tabeli punktów. Funkcja odległości znajdzie punkty, w których najbliższy jest większy niż 10000 metrów. (Oczywiście możesz podać dowolną odpowiednią wartość)

Jeśli powyższe działa, przejdź do instrukcji DELETE, coś w stylu:

DELETE FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);
Micha
źródło
1
1. Punkty nie są sortowane. 2. Co jeśli błąd będzie mniejszy niż 10000 metrów? Na przykład 150 metrów?
smirnoffs,
1
Może nie zrozumiałem. Z twojego obrazu widzę, że prawie wszystkie punkty są skupione w jednym obszarze, a bardzo niewielka ich liczba jest bardzo daleko. Czy to nie jest problem? Jeśli punkt znajduje się zaledwie 150 metrów od drugiego, to skąd wiesz, że jest to wartość odstająca?
Micha,
1

Postaram się udzielić bardziej praktycznej odpowiedzi, aby pomóc ci wykonać zadanie. (przepraszam, jeśli szukasz dyskusji na temat algorytmów)

Scenariusz 1: Wspominasz o „punktach GPS”, więc jeśli masz dostęp do oryginalnych punktów GPS, zadanie staje się znacznie łatwiejsze. Możesz wyrzucać punkty przy wysokiej HDOP / VDOP lub liczbie widocznych satelitów - co pierwotnie spowodowałoby błąd. Darmowe narzędzie, takie jak gpsbabel, ma wbudowane takie filtry. http://www.gpsbabel.org/htmldoc-development/Data_Filters.html

Scenariusz 2: Po prostu masz zestaw punktów. Problemem staje się wówczas wykrywanie odstających wartości przestrzennych. Jest wiele badań w tej dziedzinie i widzę wiele artykułów na ten temat z wyszukiwania w Internecie. Jeśli chcesz wyczyścić swoje dane, możesz użyć algorytmu GRASS v.outlier, który powinien działać w twoim przypadku na podstawie udostępnionego zrzutu ekranu. http://grass.osgeo.org/gdp/html_grass63/v.outlier.html

myśli przestrzenne
źródło
Dzięki za komentarz. Niestety mam tylko współrzędne. GPS był tylko źródłem współrzędnych i nie mam dostępu do oryginalnych śladów GPS.
smirnoffs,
-2

Myślę, że masz niepotrzebne dane. Realistycznie, jeśli zależy ci na tym, że niektóre dane są błędne i nie możesz wiarygodnie zidentyfikować każdego niewłaściwego punktu za pomocą innego czynnika, to będziesz mieć złe dane w swojej analizie.

Jeśli to ma znaczenie, prawdopodobnie powinieneś rozważyć wyrzucenie wszystkiego, ustalenie pierwotnej przyczyny (np. Złe punkty GPS pochodzą z wielu ścieżek), zajęcie się tą pierwotną przyczyną (np. Dodanie anteny dławikowej lub lepszego typu GPS, lub innego najlepszego rozwiązania) jest), a następnie ponawianie gromadzenia danych.

Jeśli złe dane nie mają znaczenia, skorzystaj z nich i zignoruj ​​błędy.

BradHards
źródło