纬度经度的哈希/密钥创建功能?

Pol*_*878 2 c c++ hash stl

我有与纬度/经度值相关的数据块.我想从纬度/经度值创建一个查找键/哈希值,以便它可以用作查找地图或类似的东西.

我正在使用西方和南方的负值...因此5W,10S在程序中表示为-5,-10.

如果可能的话,我希望能够从键值中获取纬度/经度值.

派生值必须是某种整数值.

我正在使用C/C++ :)

谢谢,我很乐意回答任何问题!

mjv*_*mjv 5

你并不是真的在寻找哈希(哈希通常会分散基础密钥,而且它们也允许进行分支).

相反,我认为像下面这样的简单公式可以解决问题,而且它是可逆的.

[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)
Run Code Online (Sandbox Code Playgroud)

扭转

Long = (Key Modulo (LatOffset * Precision)) Div Precision
Lat  = (Key Div (LatOffset * Precision)) Div Precision )
Run Code Online (Sandbox Code Playgroud)

编辑:哎呀,我没注意到它在C中.确实,使用jheddings的解决方案(或其变体(要求"hash"键是一个整数).