Як анонізувати файл gps?


11

Уявіть, що у вас є 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()

червоний маршрут

Результат показаний вище. Підсумовуючи: чи можна «визначити червоний маршрут» і чи є кращий шлях?


5
Я думаю, що вам може знадобитися чітке визначення та сфера застосування для того, що тут "анонімне". Це буде дуже залежати від контексту даних, наприклад, якщо його в місті, хтось міг би дотримуватися навіть дуже точного маршруту, у віддаленій / обмеженій області він дає набагато більше інформації, якщо він починається / закінчується або проходить через особливо інформативне місце (наприклад, чийсь будинок). І яку інформацію потрібно зберегти? пройдена відстань? відносний час або швидкість? шлях для відображення сліду? Вони визначають, чи можна просто видалити (деякі) дані або додати, наприклад, постійний / випадковий шум.
drfrogsplat

що ви плануєте використовувати це також для питань, ви можете просто встановити початкову точку до 0,0 для всіх своїх маршрутів
Ян Тертон

Цікаве питання, і я маю справу з деякими подібними проблемами із спільними даними про їзду на велосипеді. Ви уявляєте "анонімізацію" файлу GPX і зберігаєте його у форматі GPX? Чи можете ви зберегти як рядок (відкидаючи інформацію про трекпойнт)? Що ви насправді хочете затьмарити?
Simbamangu

Обговорення з колегами призвело до ідеї просто рубати перший і останній x метри на відстань, яка вважається «k anonymous» en.wikipedia.org/wiki/K-anonymity . У відповідь на @drfrogsplat я маю на увазі визначення анонімності ICO, яке є невиразним: "Не існує простого правила обробки просторової інформації - наприклад, поштових індексів, даних GPS або посилань на карту - згідно із Законом про захист даних 1998 (DPA). У деяких випадках обставини, це становитиме особисті дані "(але які?): ico.org.uk/media/1061/anonymisation-code.pdf
RobinLovelace

1
Що таке анонімність K для послідовності GPS-точок? Що ви маєте на увазі під «рубанням» першого / останнього метра - ви маєте на увазі підрізання набору точок (коротше) або зменшення точності точок треку?
Simbamangu

Відповіді:


5

Я працюю з нашою місцевою велосипедною групою, щоб анонімізувати файли GPX за двома критеріями (насамперед щодо безпеки). Я ніколи не стикався зі стандартним способом анонімізації даних, але це задовольняє дві проблеми наших членів, зберігаючи точність уздовж доріг та інформацію про швидкість:

  • Особисті місця, видалення приватних зон для приватних осіб;
  • Поміщення часових позначок, щоб дані про подорожі не могли використовуватися для ідентифікації окремих рухів.

GPSBabel може виконувати і те, і інше з командного рядка - наприклад, перемістити час у файлі GPX на +123450 секунд і видалити всі точки сліду в 0,5 км від орієнтиру на півночі Танзанії:

gpsbabel -t -i gpx -f infile.gpx \
  -x transform,wpt=trk,del -x track,move=123450s \
  -x radius,distance=0.5K,lat=-3.368,lon=36.624,nosort,exclude \
  -x transform,trk=wpt,del \
  -o gpx -F infile_rand.gpx
  • -t: обробляти лише треки;
  • -i, -f: тип вхідного файлу (gpx) та ім'я файлу;
  • -x: два послідовних (-x) аргументу фільтра для переміщення часу (переміщення) та видалення (радіус, виключення) навколо точки;
  • -o, -F: тип вихідного файлу та ім'я файлу.

Ця команда поєднує в собі кілька фільтрів - спочатку перетворюючи точки доріжок у шляхові точки, потім фільтруючи, потім перетворюючи назад на точки сліду.

Зауважте, що зменшення десяткових знаків навколо орієнтиру / зони конфіденційності ДУЖЕ важливо, оскільки воно затьмарює точний центр області конфіденційності. 3 десяткових знаки = ~ 110 м точності в цьому випадку.

Зазвичай я дзвоню GPSBabel з R, записуючи новий файл GPX із застосованими фільтрами, включаючи випадковий зсув часу +/- 2 тижні. Це було б краще як баш або пітон сценарій, але багато інших робіт, які я роблю, - це R, і я лінивий ...

# Get the correct location for GPSBabel:
GB <- Sys.which("gpsbabel")

# Set up the filters
shift <- round((runif(1, 0, 2600000) - 1300000), 0) # +/- 2 weeks in secs
filter <- " -x transform,wpt=trk,del"
filter <- paste(" -x track,move=", shift, "s", sep = "")
filter <- paste(filter, " -x radius,distance=", dist, "K,", "lat=", lat, ",long=", lon, sep = "")
filter <- paste(filter, " -x transform,wpt=trk,del", sep="")

# Pass the complete command to the system
system(paste(GB, " -t -i gpx -f ", gpx_file, filter, " -o gpx -F ", 
           gsub(".gpx", replacement = "_rand.gpx", x = gpx_file, fixed = T),
           sep = ""), intern = TRUE)

1

Вам не пощастило, це надзвичайно важко зробити! Якщо ви серйозно ставитесь до цього, варто прочитати про диференційовану конфіденційність, адже це, мабуть, те, що ви хочете.

Коли ви думаєте про цю проблему, вам слід розглянути випадок затворника, що живе в кінці довгої ізольованої дороги. Ви дійсно думаєте, що можете зробити щось щодо їх координати GPS і нічого не виявити про цю конкретну людину. Побічна інформація тут полягає в тому, що можна легко виявити, що там живе лише одна людина.

Зняття ідентифікатора користувача, час та додавання шуму до точок даних - це гарне місце для початку. Але проблема полягає в тому, що всі точки даних сильно співвідносяться, тому якщо ви додасте випадковий шум до кожної точки, шум відміняється, і хтось зможе отримати ймовірні траєкторії. Таким чином, шум повинен бути стійким до цієї атаки, наприклад, роблячи його постійним через траєкторію. Але тоді траєкторії, ймовірно, можна легко узгодити з ймовірними маршрутами на основі доріг тощо.

Я не впевнений, чи отримані вами дані все ще будуть корисними для того, що ви хочете зробити з цим, але, принаймні, це пристрасне поле.

PS: Я не знаю про юридично прийнятне, я б очікував, що це буде рухома ціль та конкретна країна, тоді як математичне визначення диференціальної конфіденційності є найбільш надійним, що ви можете отримати.


0

здійснити коригування координат X і Y кожної точки на випадкову відстань між певним мінімумом і максимальним зміщенням. також зробіть напрямок зміщення (плюс або мінус) випадковим вибором. Включіть у рандомізацію, що деякі точки можуть не коригувати одну або обидві частини пари координат.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.