Imaginez que vous ayez une trace GPS que vous souhaitez rendre anonyme, au sens juridique. Comment ferais-tu ceci? L'accrochage à la distance x la plus proche et la suppression du temps sont-ils suffisants? Existe-t-il des normes internationalement acceptées à ce sujet? Quelqu'un a-t-il déjà écrit un algorithme pour ce faire? Sinon, je prévois de faire une fonction dans mon package stplanr en évolution pour ce faire.
Exemple reproductible (en utilisant la fonction de rotation impressionnante de @geospacedman) à partir de mes propres données « identifiables »:
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()
Le résultat est illustré ci-dessus. En résumé: l'itinéraire rouge est-il «identifiable» et existe-t-il une meilleure solution?
Réponses:
Je travaille avec notre groupe cycliste local pour anonymiser les fichiers GPX sur deux critères (principalement pour la sécurité). Je n'ai jamais rencontré de méthode standard d'anonymisation des données mais cela répond à deux préoccupations de nos membres, tout en préservant la précision le long des routes et les informations de vitesse:
GPSBabel peut effectuer ces deux opérations à partir de la ligne de commande - par exemple, pour décaler les heures dans un fichier GPX de +123450 secondes et supprimer tous les points de suivi à 0,5 km d'un point de repère dans le nord de la Tanzanie:
-t
: traiter uniquement les pistes;-i
,-f
: type de fichier d'entrée (gpx) et nom de fichier;-x
: deux arguments de filtre séquentiels (-x) pour le décalage temporel (déplacement) et la suppression (rayon, exclusion) autour d'un point;-o
,-F
: type et nom du fichier de sortie.Cette commande enchaîne plusieurs filtres - transformant d'abord les points de cheminement en points de cheminement, puis filtrant, puis reconvertissant en points de cheminement.
Notez que la réduction des décimales autour du point de repère / de la zone de confidentialité est TRÈS importante car elle masque le centre exact de la zone de confidentialité. 3 décimales = précision de ~ 110 m dans ce cas.
J'appelle généralement GPSBabel à partir de R, en écrivant un nouveau fichier GPX avec des filtres appliqués, y compris un décalage temporel aléatoire de +/- 2 semaines. Ce serait mieux en tant que script bash ou python mais beaucoup d'autres travaux que je fais sont en R et je suis paresseux ...
la source
Vous n'avez pas de chance, c'est extrêmement difficile à faire! Si vous êtes sérieux à ce sujet, vous devriez lire sur la confidentialité différentielle, car c'est probablement ce que vous recherchez.
Lorsque vous pensez à ce problème, vous devriez considérer le cas d'une personne recluse vivant au bout d'une longue route isolée. Pensez-vous vraiment que vous pouvez faire quelque chose au sujet de leurs coordonnées GPS et ne rien révéler sur cette personne en particulier. L'information secondaire ici est qu'il peut être facilement découvert qu'une seule personne y vit.
Supprimer l'ID utilisateur, l'heure et ajouter du bruit aux points de données est un bon point de départ. Mais le problème est que tous les points de données sont fortement corrélés, donc si vous ajoutez du bruit aléatoire à chaque point, le bruit sera annulé et quelqu'un pourra déduire les trajectoires probables. Il faudrait donc que le bruit résiste à cette attaque, par exemple en le rendant constant sur une trajectoire. Mais alors, les trajectoires peuvent probablement être facilement mises en correspondance avec les itinéraires probables basés sur les routes, etc.
Je ne sais pas si les données avec lesquelles vous vous retrouverez seront toujours utilisables pour tout ce que vous voulez en faire, mais au moins c'est un domaine passionnant.
PS: Je ne sais pas ce qui est légalement acceptable, je m'attendrais à ce qu'il s'agisse d'une cible mobile et d'un pays spécifique tandis que la définition mathématique de la confidentialité différentielle est la plus robuste que vous puissiez obtenir.
la source
effectuer un ajustement des coordonnées X et Y de chaque point par une distance aléatoire entre un certain décalage minimum et maximum. faire également de la direction du décalage (plus ou moins) une sélection aléatoire. Inclure dans la randomisation que certains points peuvent ne pas avoir d'ajustement sur l'une ou les deux parties d'une paire de coordonnées.
la source