Представьте, что у вас есть GPS-трассировка, которую вы хотите сделать анонимной в юридическом смысле. Как бы вы это сделали? Достаточно ли привязки к ближайшему x расстоянию и выбрасывания времени? Существуют ли международно согласованные стандарты по этому вопросу? Кто-нибудь уже написал алгоритм для этого? Если нет, я планирую сделать функцию в моем развивающемся пакете stplanr, чтобы сделать это.
Воспроизводимый пример (с использованием потрясающей функции вращения от @geospacedman) из моих собственных « опознаваемых » данных:
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()
Результат показан выше. Таким образом, красный маршрут «опознаваем» и есть ли лучший способ?
Ответы:
Я работаю с нашей местной велосипедной группой, чтобы анонимизировать файлы GPX по двум критериям (в первую очередь для обеспечения безопасности). Я никогда не сталкивался со стандартным способом анонимизации данных, но это удовлетворяет две проблемы наших участников, сохраняя при этом точность вдоль дорог и информацию о скорости:
GPSBabel может выполнить оба этих действия из командной строки - например, чтобы сдвинуть время в файле GPX на +123450 секунд и удалить все точки отслеживания на расстоянии 0,5 км от ориентира в северной Танзании:
-t
: только дорожки процесса;-i
,-f
: тип входного файла (gpx) и имя файла;-x
: два последовательных (-x) аргумента фильтра для сдвига по времени (перемещение) и удаления (радиус, исключение) вокруг точки;-o
,-F
: тип выходного файла и имя файла.Эта команда связывает воедино несколько фильтров - сначала преобразует трекпоинты в путевые точки, затем фильтрует, затем преобразует обратно в трекпоинты.
Обратите внимание, что сокращение десятичных разрядов вокруг ориентира / области конфиденциальности ОЧЕНЬ важно, поскольку оно затеняет точный центр области конфиденциальности. 3 знака после запятой = точность ~ 110 м в этом случае.
Обычно я звоню в GPSBabel из R и пишу новый файл GPX с примененными фильтрами, включая случайный сдвиг +/- 2 недели. Это было бы лучше, как сценарий bash или python, но большая часть другой работы, которую я делаю, связана с R, и я ленивый ...
источник
Вам не повезло, это невероятно сложно сделать! Если вы серьезно относитесь к этому, вы должны прочитать о дифференциальной конфиденциальности, потому что это, вероятно, то, что вы ищете.
Когда вы думаете об этой проблеме, вам следует рассмотреть случай с отшельником, живущим в конце длинной изолированной дороги. Вы действительно думаете, что можете что-то сделать с их GPS-координатой и ничего не рассказать об этом конкретном человеке? Дополнительная информация здесь заключается в том, что легко обнаружить, что там живет только один человек.
Удаление идентификатора пользователя, время и добавление шума к точкам данных - это хорошее место для начала. Но проблема в том, что все точки данных сильно коррелированы, поэтому, если вы добавите случайный шум в каждую точку, шум будет устранен, и кто-то сможет получить вероятные траектории. Таким образом, шум должен быть устойчивым к этой атаке, например, делая его постоянным по траектории. Но тогда траектории, вероятно, можно легко сопоставить с вероятными маршрутами, основанными на дорогах и т. Д.
Я не уверен, что данные, которые у вас получатся, будут работать для того, что вы хотите с ними делать, но, по крайней мере, это увлекательная область.
PS: я не знаю о юридически приемлемом, я бы ожидал, что это будет движущейся целью и конкретной страной, в то время как математическое определение дифференциальной конфиденциальности является наиболее надежным, что вы можете получить.
источник
выполнить корректировку координат X и Y каждой точки на случайное расстояние между определенным минимальным и максимальным смещением. также сделайте направление смещения (плюс или минус) случайным выбором. Включите в рандомизацию, что некоторые точки могут не иметь регулировки для одной или обеих частей пары координат.
источник