我有与纬度/经度值关联的数据 block 。我想从纬度/经度值创建一个查找键/哈希值,以便它可以用作对 map 或类似内容的查找。
我对西部和南部使用负值...因此 5W、10S 在程序中表示为 -5、-10。
如果可能的话,我希望能够从键值中取回纬度/经度值。
派生值必须是某种整数值。
我正在使用 C/C++ :)
谢谢,我很乐意回答任何问题!
最佳答案
您并不是真正在寻找哈希(哈希通常分散底层键,并且它们允许冲突)。
我认为,像下面这样的简单公式就可以解决问题,而且它是可逆的。
[pseudo code]
Precision = 100 // lat and long precsion, boost to 1000 if need be
LatOffset = 1000 // Anithing above 180 would do
Key = ((int)(Lat * Precision) * LatOffset) + (int)(Long * Precision)
反转
Long = (Key Modulo (LatOffset * Precision)) Div Precision
Lat = (Key Div (LatOffset * Precision)) Div Precision )
编辑:糟糕,我没有注意到这是在 C 中。确实,使用 jheddings 的解决方案(或其变体(要求“散列”键是整数))。
关于c++ - 纬度经度的哈希/ key 创建功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1694902/