Wyobraź sobie, że masz ślad GPS, który chcesz uczynić anonimowym, w sensie prawnym. Jak byś to zrobił? Czy przyciąganie do najbliższej odległości x i skrócenie czasu jest wystarczające? Czy istnieją w tym zakresie międzynarodowe standardy? Czy ktoś już napisał algorytm, aby to zrobić? Jeśli nie, planuję zrobić funkcję w moim rozwijającym się pakiecie stplanr, aby to zrobić.
Powtarzalny przykład (przy użyciu niesamowitej funkcji obrotu z @geospacedman) z moich własnych danych „ możliwych do zidentyfikowania ”:
library(rgdal)
library(tmap)
downloader::download("https://www.openstreetmap.org/trace/1619756/data", "test.gpx")
r <-readOGR(dsn = "test.gpx", layer = "tracks")
r <- spTransform(r, CRS("+init=epsg:27700"))
rproj <- rotateProj(rs, 90) # rotate projection for plotting
r <- spTransform(r, rproj)
rs <- rgeos::gSimplify(r, 1000) # snap to nearest km
qtm(r) + qtm(rs, line.col = "red") + tm_layout(draw.frame = F) + tm_scale_bar()
Wynik pokazano powyżej. Podsumowując: czy czerwona droga jest „możliwa do zidentyfikowania” i czy istnieje lepszy sposób?
Odpowiedzi:
Współpracuję z naszą lokalną grupą rowerową w celu anonimizacji plików GPX według dwóch kryteriów (przede wszystkim bezpieczeństwa). Nigdy nie spotkałem się ze standardową metodą anonimizacji danych, ale spełnia to dwa obawy naszych członków, przy jednoczesnym zachowaniu dokładności na drogach i informacji o prędkości:
GPSBabel może wykonać oba te operacje z wiersza poleceń - na przykład, aby przesunąć czasy w pliku GPX o +123450 sekund i usunąć wszystkie punkty trasy w odległości 0,5 km od punktu orientacyjnego w północnej Tanzanii:
-t
: tylko ścieżki procesowe;-i
,-f
: typ pliku wejściowego (gpx) i nazwa pliku;-x
: dwa sekwencyjne (-x) argumenty filtru dla przesunięcia czasowego (przesunięcie) i usunięcia (promień, wykluczenie) wokół punktu;-o
,-F
: typ pliku wyjściowego i nazwa pliku.To polecenie łączy ze sobą kilka filtrów - najpierw przekształcając punkty trasy w punkty drogi, następnie filtrując, a następnie przekształcając z powrotem do punktów drogi.
Pamiętaj, że zmniejszenie miejsc dziesiętnych wokół punktu orientacyjnego / obszaru prywatności jest BARDZO ważne, ponieważ zasłania dokładny środek obszaru prywatności. 3 miejsca dziesiętne = w tym przypadku dokładność ~ 110 m .
Zazwyczaj dzwonię do GPSBabel z R, pisząc nowy plik GPX z zastosowanymi filtrami, w tym losową przesunięciem czasu +/- 2 tygodnie. Byłoby lepiej jako skrypt bash lub python, ale wiele innych prac, które wykonuję, to R i jestem leniwy ...
źródło
Masz pecha, jest to niezwykle trudne! Jeśli poważnie o tym myślisz, powinieneś przeczytać o prywatności różnicowej, ponieważ prawdopodobnie tego właśnie szukasz.
Kiedy myślisz o tym problemie, powinieneś wziąć pod uwagę przypadek samotnika mieszkającego na końcu długiej, odizolowanej drogi. Czy naprawdę uważasz, że możesz coś zrobić z ich współrzędną GPS i nie ujawniać niczego na temat tej konkretnej osoby? Boczna informacja tutaj jest taka, że można łatwo odkryć, że mieszka tam tylko jedna osoba.
Dobrym początkiem jest usunięcie identyfikatora użytkownika, czasu i dodanie szumu do punktów danych. Problem polega jednak na tym, że wszystkie punkty danych są silnie skorelowane, więc jeśli dodasz losowy szum do każdego punktu, szum zostanie anulowany i ktoś będzie w stanie wyliczyć prawdopodobne trajektorie. Hałas musiałby więc być odporny na ten atak, na przykład poprzez ustawienie go na stałym poziomie na trajektorii. Ale wtedy trajektorie można prawdopodobnie łatwo dopasować do prawdopodobnych tras opartych na drogach itp.
Nie jestem pewien, czy dane, z którymi się skończysz, będą nadal przydatne do wszystkiego, co chcesz z nimi zrobić, ale przynajmniej jest to pasjonująca dziedzina.
PS: Nie wiem o prawnie dopuszczalnych, spodziewałbym się, że będzie to ruchomy cel i specyficzny dla kraju, podczas gdy matematyczna definicja zróżnicowanej prywatności jest najsolidniejsza z możliwych.
źródło
dokonaj korekty współrzędnych X i Y każdego punktu o losową odległość między pewnym przesunięciem minimalnym i maksymalnym. również ustaw losowy kierunek przesunięcia (plus lub minus). Uwzględnij w randomizacji, że niektóre punkty mogą nie mieć dostosowania do jednej lub obu części pary współrzędnych.
źródło