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ć:
Odpowiedzi:
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.
źródło
Może to pomóc uzyskać listę wartości odstających:
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:
źródło
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
źródło
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.
źródło