コーディングのアルゴリズムはこちらに記述がありますが、以下のようになります 参考
1.符合付きの(緯度又は経度)値を取得します
2.その 10 進数に 1e5 を乗算して、値を丸めます
3.この 10 進数を 2 進数(32ビット)で考えます
4.その 2 進数を 1 ビットを左にシフトします
5.元の 10 進数が負の場合は、このエンコーディング値を反転します
6.その 2 進数を下から 5 ビット毎の集合に分割します
7.その 5 ビット毎の集合を逆順に並べ替え、
8.各集合に 0x20 の論理和演算を行います(下 30ビット分を利用)
9.各値を 10 進数に戻し、
10.その各値に 63 を加算し、
11.それを対応する ASCII コードに変換します
例として -179.9832104 は `~oia@ に変換されます
12.入力値が続く場合は、後続(の各緯度,経度)値は差分値を使います
例えば (38.5, -120.2), (40.7, -120.95), (43.252, -126.453) には
(38.5,-120.2), ( 2.2, -0.75), ( 2.252, -5.503) が対応し
_p~iF ~ps|U _ulL nnqC _mqN vxq`@ に変換されて、
結果 _p~iF~ps|U_ulLnnqC_mqNvxq`@ になります
13.なお、出力内のバックラッシュ(\)はエスケープ記号となるので(\\)にします
注. 地球の周長は約4万kmなので、緯度(,経度)の小数点以下 5桁目が 1m程度の分解能になります