在python中匿名地理位置坐标
Posted
技术标签:
【中文标题】在python中匿名地理位置坐标【英文标题】:Anonymizing geo location coordinates in python 【发布时间】:2018-03-21 07:22:55 【问题描述】:我有一个包含姓名、交易金额以及交易执行地点的准确经度和纬度的 csv。 我希望将最终文档匿名化-为此,我需要将其更改为 CSV,其中名称被散列(这应该很容易),并且经度和纬度在 2 公里的半径内被掩盖。 即,更改坐标,使其与原始位置的距离不超过 2 公里,但采用随机方式,因此无法通过公式恢复。 有谁知道如何以这种方式处理坐标?
【问题讨论】:
散列姓名不会使他们匿名,您仍然可以关联一个人的所有交易。对于坐标,您可以将它们四舍五入(例如,到最接近的 0.1 弧分)而不是随机化它们,但去匿名化通常可以做您意想不到的事情! 【参考方案1】:您可以使用locality sensitive hashing (LSH) 将相似的坐标(即在 2 公里半径内)映射到相同的值,概率很高。因此,映射到同一个桶的坐标在欧几里得空间中会更靠近。
否则,另一种技术是使用任何标准散列函数 y = H(x),并以 N 为模计算 y,其中 N 是坐标范围。假设您的坐标是 P = (500,700),并且您希望从 P 返回 [-x,x] KM 范围内的随机值。
P = (500,700)
Range = 1000 #1000 meters for example
#Anonymize co-ordinates to within specified range
ANON_X = hash(P[0]) % Range
ANON_Y = hash(P[1]) % Range
#Randomly add/subtract range
P = (P + ANON_X*random.choice([-1,1]), P+ANON_Y*random.choice([-1,1]))
【讨论】:
如果你“从 P 返回一个 [-x,x] KM 范围内的随机值”,那么有人需要做的就是用相同的 P 取很多它们并平均它们,然后他们找到了 P。 还有random.choice([-1, 1])
只选择either -1 或 1,中间什么都没有!
理论上对大量 P 进行平均是可行的,但我假设原始坐标稀疏地分布在欧几里得空间中,因此您将无法取很多点来平均. random.choice()
会起作用,因为ANON_X
已经在提供的范围内存储了一个随机值,我们必须决定在该范围内增加或减少该值。以上是关于在python中匿名地理位置坐标的主要内容,如果未能解决你的问题,请参考以下文章
在图像[OpenCV / Python]中查找[x,y]旋转坐标位置
Python地理位置信息库geopy的使用:根据中心点坐标,方向,距离计算坐标