¿Cómo anonimizar un archivo gps?


11

Imagine que tiene un rastreo GPS que desea hacer anónimo, en el sentido legal. ¿Cómo harías esto? ¿Ajustar a la distancia x más cercana y eliminar el tiempo es suficiente? ¿Existen estándares acordados internacionalmente sobre esto? ¿Alguien ha escrito un algoritmo para hacer esto? Si no, planeo hacer una función en mi paquete stplanr en evolución para hacer esto.

Ejemplo reproducible (usando la asombrosa función de rotación de @geospacedman) de mis propios datos ' identificables ':

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

ruta roja

El resultado se muestra arriba. En resumen: ¿la ruta roja es 'identificable' y hay una mejor manera?


55
Creo que puede necesitar una buena definición y alcance de lo que es "anónimo" aquí. Esto dependerá en gran medida del contexto de los datos, por ejemplo, si está en una ciudad, cualquiera podría haber seguido incluso una ruta muy precisa, en un área remota / restringida proporciona mucha más información si comienza / termina en o pasa un lugar particularmente informativo (por ejemplo, la casa de alguien). ¿Y qué información necesita ser retenida? ¿distancia recorrida? tiempos relativos o velocidad? el camino para trazar un camino? Estos determinarán si simplemente puede eliminar (algunos) datos o agregar ruido constante / aleatorio, por ejemplo.
drfrogsplat

para qué planea usarlo también, podría establecer el punto de inicio en 0,0 para todas sus rutas
Ian Turton

Pregunta interesante y estoy lidiando con algunos problemas similares con los datos de ciclismo compartidos. ¿Se imagina 'anonimizar' un archivo GPX y mantenerlo en formato GPX? ¿Podría guardar como una línea (descartando información del trackpoint)? ¿Qué es lo que realmente quieres ocultar?
Simbamangu

La discusión con colegas ha llevado a la idea de simplemente cortar el primer y último x metros a una distancia que se considera 'k anónimo' en.wikipedia.org/wiki/K-anonymity . En respuesta a @drfrogsplat, me refiero a la definición de anonimato de la ICO, que es vaga: "No existe una regla simple para manejar información espacial, como códigos postales, datos GPS o referencias de mapas, en virtud de la Ley de Protección de Datos de 1998 (DPA). En algunos circunstancias esto constituirá datos personales "(¿pero cuál?): ico.org.uk/media/1061/anonymisation-code.pdf
RobinLovelace

1
¿Qué es el anonimato de K para una secuencia de puntos GPS? ¿Qué quiere decir con 'cortar' los primeros / últimos metros? ¿Se refiere a recortar el conjunto de puntos (más cortos) o reducir la precisión de los puntos de seguimiento?
Simbamangu

Respuestas:


5

Estoy trabajando con nuestro grupo local de ciclismo para anonimizar archivos GPX en dos criterios (principalmente por seguridad). Nunca me he encontrado con una forma estándar de anonimizar datos, pero esto satisface dos preocupaciones de nuestros miembros, al tiempo que conserva la precisión a lo largo de las carreteras y la información de velocidad:

  • Ubicaciones personales, eliminación de áreas 'privadas' para individuos;
  • Obscurecer las marcas de tiempo para que los datos de viaje no puedan usarse para identificar movimientos individuales.

GPSBabel puede hacer ambas cosas desde la línea de comando, por ejemplo, para cambiar los tiempos en un archivo GPX en +123450 segundos y eliminar todos los puntos de seguimiento a 0.5 km de un punto de referencia en el norte de Tanzania:

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: solo pistas de proceso;
  • -i, -f: tipo de archivo de entrada (gpx) y nombre de archivo;
  • -x: dos argumentos de filtro secuenciales (-x) para Timeshift (mover) y eliminar (radio, excluir) alrededor de un punto;
  • -o, -F: tipo de archivo de salida y nombre de archivo.

Este comando encadena varios filtros : primero transforma los puntos de seguimiento en waypoints, luego filtra y luego vuelve a transformarlos en puntos de seguimiento.

Tenga en cuenta que reducir los lugares decimales alrededor del área de referencia / privacidad es MUY importante ya que oscurece el centro exacto del área de privacidad. 3 lugares decimales = ~ 110m de precisión en este caso.

Por lo general, llamo a GPSBabel desde R, escribiendo un nuevo archivo GPX con filtros aplicados, incluido un cambio de hora aleatorio +/- 2 semanas. Esto sería mejor como un script bash o python, pero gran parte del otro trabajo que hago es en R y soy flojo ...

# 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

No tienes suerte, ¡esto es tremendamente difícil de hacer! Si lo toma en serio, debe leer sobre la privacidad diferencial porque esto es probablemente lo que busca.

Cuando piense en este problema, debe considerar el caso de una persona reclusa que vive al final de un largo camino aislado. ¿Realmente crees que puedes hacer algo sobre su coordenada GPS y no revelar nada sobre esa persona en particular? La información adicional aquí es que se puede descubrir fácilmente que solo una persona vive allí.

Despojando la identificación del usuario, el tiempo y agregando ruido a los puntos de datos es un buen lugar para comenzar. Pero el problema es que todos los puntos de datos están fuertemente correlacionados, por lo que si agrega ruido aleatorio a cada punto, el ruido se cancelará y alguien podrá deducir las trayectorias probables. Por lo tanto, el ruido tendría que ser resistente a este ataque, por ejemplo, haciéndolo constante a lo largo de una trayectoria. Pero entonces, las trayectorias probablemente se pueden combinar fácilmente con rutas probables basadas en carreteras, etc.

No estoy seguro de si los datos con los que terminará serán factibles para lo que quiera hacer con ellos, pero al menos es un campo apasionante.

PD: No sé si es legalmente aceptable, esperaría que sea un objetivo móvil y un país específico, mientras que la definición matemática de privacidad diferencial es la más sólida que puede obtener.


0

haga un ajuste a la coordenada X e Y de cada punto por una distancia aleatoria entre un cierto desplazamiento mínimo y máximo. También haga que la dirección del desplazamiento (más o menos) sea una selección aleatoria. Incluya en la aleatorización que algunos puntos pueden no tener ajuste en una o ambas partes de un par de coordenadas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.