Bagaimana cara menganonimkan file gps?

11

Bayangkan Anda memiliki jejak GPS yang ingin Anda jadikan anonim, dalam arti hukum. Bagaimana Anda melakukan ini? Apakah memotret dengan jarak x terdekat dan mencabut waktu cukup? Apakah ada standar yang disepakati secara internasional tentang ini? Adakah yang sudah menulis algoritma untuk melakukan ini? Jika tidak, saya berencana untuk membuat fungsi dalam paket stplanr saya yang sedang berkembang untuk melakukan ini.

Contoh yang dapat direproduksi (menggunakan fungsi rotasi yang luar biasa dari @geospacedman) dari data ' Identifiable ' saya sendiri :

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()

rute merah

Hasilnya ditunjukkan di atas. Singkatnya: apakah rute merah 'dapat diidentifikasi' dan apakah ada cara yang lebih baik?

RobinLovelace
sumber
5
Saya pikir Anda mungkin perlu definisi dan ruang lingkup yang baik untuk apa yang "anonim" di sini. Ini akan sangat tergantung pada konteks data, misalnya jika di kota, siapa pun bisa mengikuti bahkan rute yang sangat tepat, di daerah terpencil / terbatas itu memberikan lebih banyak info jika mulai / berakhir pada atau melalui lokasi yang sangat informatif (misalnya rumah seseorang). Dan informasi apa yang perlu dipertahankan? jarak yang ditempuh? waktu atau kecepatan relatif? jalan untuk memetakan jejak? Ini akan menentukan apakah Anda cukup menghapus (beberapa) data, atau menambahkan noise konstan / acak misalnya.
drfrogsplat
apa yang Anda rencanakan untuk menggunakannya juga, Anda bisa menetapkan titik awal ke 0,0 untuk semua rute Anda
Ian Turton
Pertanyaan menarik dan saya berurusan dengan beberapa masalah serupa dengan data bersepeda yang dibagikan. Apakah Anda membayangkan 'menganonimkan' file GPX dan menyimpannya dalam format GPX? Bisakah Anda menyimpan sebagai garis (membuang info trackpoint)? Apa yang benar-benar ingin Anda sembunyikan?
Simbamangu
Diskusi dengan kolega telah mengarah pada ide untuk memotong x meter pertama dan terakhir ke jarak yang dianggap 'k anonim' en.wikipedia.org/wiki/K-anonymity . Menjawab @drfrogsplat yang saya maksud adalah definisi ICO tentang anonimitas, yang tidak jelas: "Tidak ada aturan sederhana untuk menangani informasi spasial - seperti kode pos, data GPS atau referensi peta - di bawah Data Protection Act 1998 (DPA). Dalam beberapa keadaan ini akan merupakan data pribadi "(tetapi yang mana?): ico.org.uk/media/1061/anonymisation-code.pdf
RobinLovelace
1
Apakah K anonimitas itu untuk urutan titik GPS? Apa yang Anda maksud dengan 'memotong' meter pertama / terakhir - maksud Anda memotong set poin (lebih pendek), atau mengurangi keakuratan trackpoint?
Simbamangu

Jawaban:

5

Saya bekerja dengan grup bersepeda lokal kami untuk menganonimkan file GPX pada dua kriteria (terutama untuk keamanan). Saya tidak pernah menemukan cara standar untuk menganonimkan data tetapi ini memuaskan dua kekhawatiran anggota kami, sambil menjaga akurasi di sepanjang jalan dan mempercepat informasi:

  • Lokasi pribadi, menghapus area 'pribadi' untuk individu;
  • Mengaburkan cap waktu sehingga data perjalanan tidak dapat digunakan untuk mengidentifikasi gerakan individu.

GPSBabel dapat melakukan keduanya dari baris perintah - misalnya, untuk menggeser waktu dalam file GPX dengan +123450 detik, dan menghapus semua trackpoint berjarak 0,5 km dari tengara di Tanzania utara:

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: hanya memproses trek;
  • -i, -f: input tipe file (gpx) dan nama file;
  • -x: dua argumen filter berurutan (-x) untuk pergeseran timeshift (bergerak) dan penghapusan (radius, kecualikan) di sekitar titik;
  • -o, -F: jenis file keluaran dan nama file.

Perintah ini menyatukan beberapa filter - pertama mentransformasikan trackpoint menjadi waypoint, lalu memfilter, lalu mentransformasikan kembali ke trackpoint.

Perhatikan bahwa mengurangi tempat desimal di sekitar landmark / area privasi SANGAT penting karena mengaburkan pusat tepat area privasi. 3 tempat desimal = ~ 110m akurasi dalam hal ini.

Saya biasanya memanggil GPSBabel dari R, menulis file GPX baru dengan filter yang diterapkan, termasuk + timeshift acak +/- 2 minggu. Ini akan lebih baik sebagai skrip bash atau python tetapi banyak pekerjaan lain yang saya lakukan adalah di R dan saya malas ...

# 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)
Simbamangu
sumber
1

Anda kurang beruntung, ini sangat sulit dilakukan! Jika Anda serius tentang hal itu, Anda harus membaca tentang privasi diferensial karena ini mungkin yang Anda cari.

Ketika Anda memikirkan masalah ini, Anda harus mempertimbangkan kasus seorang pertapa yang tinggal di ujung jalan yang panjang dan terisolasi. Apakah Anda benar-benar berpikir Anda dapat melakukan sesuatu tentang koordinat GPS mereka dan tidak mengungkapkan apa pun tentang orang tersebut. Informasi sampingan di sini adalah bahwa dapat dengan mudah ditemukan bahwa hanya satu orang yang tinggal di sana.

Melucuti ID pengguna, waktu dan menambahkan noise ke titik data adalah tempat yang baik untuk memulai. Tetapi masalahnya adalah bahwa semua titik data sangat berkorelasi sehingga jika Anda menambahkan suara acak ke setiap titik, kebisingan akan dibatalkan dan seseorang akan dapat memperoleh kemungkinan lintasan. Jadi kebisingan harus tahan terhadap serangan ini, misalnya dengan membuatnya konstan di atas lintasan. Tapi kemudian, lintasan mungkin dapat dengan mudah dicocokkan dengan rute yang mungkin didasarkan pada jalan, dll.

Saya tidak yakin apakah data yang Anda peroleh akan tetap bisa digunakan untuk apa pun yang ingin Anda lakukan dengannya, tetapi setidaknya itu adalah bidang yang menggairahkan.

PS: Saya tidak tahu tentang yang dapat diterima secara hukum, saya berharap itu menjadi target yang bergerak dan spesifik negara sedangkan definisi matematika dari privasi diferensial adalah yang paling kuat yang bisa Anda dapatkan.

Gila Echet
sumber
0

membuat penyesuaian pada koordinat X dan Y dari setiap titik dengan jarak acak antara offset minimum dan maksimum tertentu. juga membuat arah offset (plus atau minus) menjadi pilihan acak. Masukkan dalam pengacakan bahwa beberapa titik mungkin tidak memiliki penyesuaian untuk satu atau kedua bagian dari pasangan koordinat.

Adam
sumber