经纬度编码转换

news/2024/9/1 4:09:03

众所周知,包括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。


http://www.niftyadmin.cn/n/2644039.html

相关文章

MySQL锁表解决方法(转)

MySQL锁表解决方法 一、我的处理过程 1、查进程,主要是查找被锁表的那个进程的ID SHOW PROCESSLIST; 2、kill掉锁表的进程ID KILL 10866;//后面的数字即时进程的ID 网上找了些资料,了解了一下,先分享一下: 二、mysql的锁表问题 …

关于准系统,镭波,地球人等等其他牌子的机器介绍和外星人的比较

2019独角兽企业重金招聘Python工程师标准>>> 现在越来越多的人开始关注alienware,也许是因为他无与伦比的个性外形,花哨浮夸的弥红灯,又或者是君临天下,不可一世的彪悍性能。当然由于alienware过高的价格,导…

grep sed awk find的用法归纳

0 正则表达式的基础 ^ 行首标识 $ 篇尾标识或行尾标识 . 代表任意一个字符 ? 代表前趋字符的一次出现 * 代表0个或多个前趋字符出现 [1-9] 代表一个属于1-9的字符 [^1-9] 代表一个不…

ViewStack 的自动创建子项策略 creationPolicy

和UIComponent的states不同,ViewStack默认的创建策略creationPolicy“auto”,并非跳转到某一页后,才创建INavigatorContent子项。实际上,在ViewStack 被addChild到舞台显示列表,initialize方法被调用时,Vie…

VMP分析一:寄存器赋值分析

源码: mov eax,0x123456 进入VM前寄存器和堆栈的值 EAX AAAAAAAA ECX CCCCCCCC EDX DDDDDDDD EBX BBBBBBBB ESP 0018FEE8 EBP EEEEEEEE ESI 99999999 EDI 88888888 EIP 00427079 TestVmp_.00427079 C 0 ES 002B 32位 0(FFFFFFFF) P 1 CS 0023 32位 0(FFFFFFFF) A …

sqlite简明教程

本文的主要目的是作为一个入门级教程,教你一些如何使用PySqlite来操作 Sqite 的一些基本的语句,更详细的还要去参考想应的文档以及编写相应的测试程序。希望本文对你有帮助。 我以前的Blog sqlite一个轻巧的数据库 PySqlite的主页地址:http…

Linux 文件按大小排序

Linux 某个目录下的文件按大小排序 1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du -s /usr/* | sort -rn | head 5.选出排在后面的10个 du -s /usr/* | sort -rn | tail…

iOS博主

OneV‘s Denhttp://onevcat.com/破船之家http://beyondvincent.com/NSHipsterhttp://nshipster.cn/Limboy 无网不剩http://limboy.me唐巧的技术博客http://blog.devtang.com/Lex iOS noteshttp://ios.lextang.com/念茜的博客http://nianxi.net/Xcode Devhttp://blog.xcodev.com…