经纬度编码转换

众所周知,包括LT在内的所有导航软件的地图,就是经纬度坐标的点的集合。然后,与GPS的经纬度信号匹配,才能应用成为导航。
但是由于国家政策原因,LT不能直接用经纬度定位一个目标。为此,LT用了一种变通的方法:灵图编码。

这个灵图编码到底是什么规律呢?在此抛砖引玉,希望大家研究研究:

灵图编码共有12位,分为3节,表现为 abcd
-efgh-ijkl 的形式。
大家可以看一下自己的机器。

但是,实际上,这种分节的方法,是一种妥协,是骗人的。LT不能公然对抗国家政策法规,只好做一些伪装了。

咱们试试,定位6993
-0563-3391,看看是哪里。这个点大家都熟悉,让我们命名为A点。
然后只改一个数4993
-0563-3391,看看在哪儿?嗯,在A点南方约200米。
咱们再改一个数8993
-0563-3391,在哪儿?嗯,在A点北方约200米。
好,我们摸到一点规律了。接着来:
那么应用看看:
9993-0563-3391,在哪儿?嗯,很好,如约出现在A点北方约300米的位置。
现在,出疑问了,需要进位!怎么进位呢?简单输入0993……肯定不对,是需要进位的。应该进在哪里?
试一下就可以知道,把第2节的第一位(也就是12位编码的第5位数)从“
0”改为“1”,
我们输入看看:
0993-1563-3391
很好!如约出现在A点北方约400米的地方!

好了,现在我们已经发现一点规律了。
让我们继续观察,并得到:

整个12位编码的第1位数字,每加1,就向北移动100米左右;每减1,就向南移动100米左右;
第2位数字,每减1,就向南移动100公里;
第3位数字,每减1,就向西移动1公里;
第4位数字,每减1,就向南移动约7米;
第5位数字,每加1,就向北移动1公里;
第6位数字,每减1,就向西移动100米;
第7位数字,每减1,就向西移动100公里;
第8位数字,每减1,就向西移动10公里;
第9位数字,每加1,就向东移动10米;
第10位数,每减1,就向南移动1000公里;
第11位数,每减1,就向南移动10公里;
第12位数,每减1,就向西移动1000公里。

现在我们已经有一点认识了,这个“灵图编码”就是一个XY坐标系统。

让我们试试看,如果我们定义一个原点,然后要找到距离这个原点的向西1234.5的地方,应该如何计算出灵图编码呢?
根据上面的试验:
向西1234.5公里,就是把原点的第12位数减1(代表向西1000公里),第7位减2(代表西200公里),第8位减3(代表西30公里),第3位减4(代表西4公里),第6位减5(代表西500米)。

让我们真的运算一下,看看对不对。我们首先设立一个原点,为了计算方便,我们在北京市找到一个叫做“中东汽修”的地址,其灵图编码是:
6993-0864-6391。我们把它设为起始点(设为起始点是为了显示出来目的地的距离,看看是不是1234.5公里)。
按照上述的算法,我们计算:
699308646391
  ↓↓   ↓↓↓    ↓
695303416390


点“目的地”,“下一页”,选择“编码定位”,输入咱们算出的这个695303416390,设为目的地。好了,现在看到屏幕的显示了,我们定位的新坐标,确实是在原点(起始点)的西面1234.5公里处。
这证明我们的推算是正确的。

在12位的灵图编码中
第1位数字,每加1,就向北移动100米左右;每减1,就向南移动100米左右;
第2位数字,每减1,就向南移动100公里;
第3位数字,每减1,就向西移动1公里;
第4位数字,每减1,就向南移动约7米;
第5位数字,每加1,就向北移动1公里;
第6位数字,每减1,就向西移动100米;
第7位数字,每减1,就向西移动100公里;
第8位数字,每减1,就向西移动10公里;
第9位数字,每加1,就向东移动10米;
第10位数,每减1,就向南移动1000公里;
第11位数,每减1,就向南移动10公里;
第12位数,每减1,就向西移动1000公里。

在此基础上进一步分析,影响东西方向位置的视作经度元素,影响南北方向位置的视作纬度元素。而影响比较大的看作高位,影响小的看作低位。例如,第12位对经度影响最大,应该是经度的最高位,第9位对经度的影响最小,应该是经度的最低位。根据这样的原则排列,不难得到这样的结果:
经度:
1278369
纬度:
10211514
我们用一个实际的地点来说明,在灵图上取北京四惠桥的坐标为7981
-0364-6391,按照上面说的排列规则,经度值就是 1 6 4 8 3 6,纬度值就是 3 9 9 0 7 1。据我现场实测,得出四惠桥的位置是东经116度29.062分,北纬39度54.395分。两者对比可以做出这样的判断,灵图编码就是2位整数加4位小数的经纬度(省略了经度的百位)。在这里,灵图编码的经度值164836=16.4836度=16度29.016分,纬度值399071=39.9071度=39度54.426分,与我的实测比对误差极小,不仅在简单的GPS测量误差允许范围之内,而且在电子地图上取点时光标位置的毫厘之差都会导致这种误差。
在全国范围内取几个相距较远的点作验证,我在网上找到昆明和广州的经过校准的OZI地图作为比对标准。昆明市人民路-青年路交叉口,灵图编码5513
-4427-3200,按上面推算是东经102.7143度=102度42.858分,北纬25.0453度=25度2.718分;广州市天河立交桥的灵图编码是6316-3033-0211,按上面推算是东经113.3100度=113度18.600分,北纬23.1366度=23度8.196分。与OZI地图中的经纬度比对,没有眼睛可以分辨出来的误差。
至于经度中的百位数可以这样考虑,在灵图上中国最西取一点9902
-7535-1337,换算结果是东经73.5051度,在最东端取一点7803-0850-5443,换算结果是东经135.0085度,所以可以这样判断,经度最高位如果大于5,百位就是0,如果小于5,百位就是1。

geohash简介: geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。geohash有以下几个特点: 首先,geohash用一个字符串表示经度和纬度两个坐标。某些情况下无法在两列上同时应用索引 (例如MySQL 4之前的版本,Google App Engine的数据层等),利用geohash,只需在一列上应用索引即可。 其次,geohash表示的并不是一个点,而是一个矩形区域。比如编码wx4g0ec19,它表示的是一个矩形区域。 使用者可以发布地址编码,既能表明自己位于北海公园附近,又不至于暴露自己的精确坐标,有助于隐私保护。 第三,编码的前缀可以表示更大的区域。例如wx4g0ec1,它的前缀wx4g0e表示包含编码wx4g0ec1在内的更大范围。 这个特性可以用于附近地点搜索。首先根据用户当前坐标计算geohash(例如wx4g0ec1)然后取其前缀进行询 (SELECT * FROM place WHERE geohash LIKE 'wx4g0e%'),即可询附近的所有地点。Geohash比直接用经纬度的高效很多。用途: 移动互联网,lbs可以说是一个基础应用,geohash对于解决附近地点搜索提供了一个有效的解决方案。扩展: 这个php扩展,提供了三个函数:/**     *  $latitude    //纬度     *  $longitude   //经度     *  $precision   //精密度, 默认是12     *  返回 $precision 长度的 string     */    geohash_encode($latitude, $longitude, $precision=12);      /**     *  $hash    //geohash_encode后的值     *  返回 array // Array     *                    (     *                        [latitude] => 39.416916975752     *                        [longitude] => 100.92223992571     *                        [north] => 39.416917059571     *                        [east] => 100.92224009335     *                        [south] => 100.92223992571     *                        [west] => 100.92223975807     *                    )     */    geohash_decode($hash);    /**     *  $hash    //geohash_encode后的值     *  返回 在$hash 8个 (东南西北各二个)附近的hash值     */    geohash_neighbors($hash); 标签:geohash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值