望塵軒中一盞茶

          統(tǒng)計

          留言簿

          友情鏈接

          閱讀排行榜

          評論排行榜

          靈圖編碼與經(jīng)緯度轉(zhuǎn)換問題

           

                  最近做項(xiàng)目的時候,需要使用51地圖的免費(fèi)接口標(biāo)注一些網(wǎng)點(diǎn),查看51地圖的API文檔得知需要使用經(jīng)緯度并進(jìn)行加密來標(biāo)注。由于手中沒有GPS終端,但是有靈圖編碼,于是就去網(wǎng)上找靈圖編碼轉(zhuǎn)經(jīng)緯度方面的介紹,找了很久終于找到了一篇,現(xiàn)轉(zhuǎn)載其內(nèi)容如下,以方便大家使用。(聲明,此文轉(zhuǎn)載自“明心獅的個人空間”,原文地址:http://www.cnpeugeot.com/index.php/64/action_viewspace_itemid_111.html
                  以下是原文中部分內(nèi)容:

           

          眾所周知,包括LT在內(nèi)的所有導(dǎo)航軟件的地圖,就是經(jīng)緯度坐標(biāo)的點(diǎn)的集合。然后,與GPS的經(jīng)緯度信號匹配,才能應(yīng)用成為導(dǎo)航。
          但是由于國家政策原因,LT不能直接用經(jīng)緯度定位一個目標(biāo)。為此,LT用了一種變通的方法:靈圖編碼。

          這個靈圖編碼到底是什么規(guī)律呢?在此拋磚引玉,希望大家研究研究:

          靈圖編碼共有12位,分為3節(jié),表現(xiàn)為 abcd
          -efgh-ijkl 的形式。
          大家可以看一下自己的機(jī)器。

          但是,實(shí)際上,這種分節(jié)的方法,是一種妥協(xié),是騙人的。LT不能公然對抗國家政策法規(guī),只好做一些偽裝了。

          咱們試試,定位6993
          -0563-3391,看看是哪里。這個點(diǎn)大家都熟悉,讓我們命名為A點(diǎn)。
          然后只改一個數(shù)4993
          -0563-3391,看看在哪兒?嗯,在A點(diǎn)南方約200米。
          咱們再改一個數(shù)8993
          -0563-3391,在哪兒?嗯,在A點(diǎn)北方約200米。
          好,我們摸到一點(diǎn)規(guī)律了。接著來:
          那么應(yīng)用看看:
          9993-0563-3391,在哪兒?嗯,很好,如約出現(xiàn)在A點(diǎn)北方約300米的位置。
          現(xiàn)在,出疑問了,需要進(jìn)位!怎么進(jìn)位呢?簡單輸入0993……肯定不對,是需要進(jìn)位的。應(yīng)該進(jìn)在哪里?
          試一下就可以知道,把第2節(jié)的第一位(也就是12位編碼的第5位數(shù))從“
          0”改為“1”,
          我們輸入看看:
          0993-1563-3391
          很好!如約出現(xiàn)在A點(diǎn)北方約400米的地方!

          好了,現(xiàn)在我們已經(jīng)發(fā)現(xiàn)一點(diǎn)規(guī)律了。
          讓我們繼續(xù)觀察,并得到:

          整個12位編碼的第1位數(shù)字,每加1,就向北移動100米左右;每減1,就向南移動100米左右;
          第2位數(shù)字,每減1,就向南移動100公里;
          第3位數(shù)字,每減1,就向西移動1公里;
          第4位數(shù)字,每減1,就向南移動約7米;
          第5位數(shù)字,每加1,就向北移動1公里;
          第6位數(shù)字,每減1,就向西移動100米;
          第7位數(shù)字,每減1,就向西移動100公里;
          第8位數(shù)字,每減1,就向西移動10公里;
          第9位數(shù)字,每加1,就向東移動10米;
          第10位數(shù),每減1,就向南移動1000公里;
          第11位數(shù),每減1,就向南移動10公里;
          第12位數(shù),每減1,就向西移動1000公里。

          現(xiàn)在我們已經(jīng)有一點(diǎn)認(rèn)識了,這個“靈圖編碼”就是一個XY坐標(biāo)系統(tǒng)。

          讓我們試試看,如果我們定義一個原點(diǎn),然后要找到距離這個原點(diǎn)的向西1234.5的地方,應(yīng)該如何計算出靈圖編碼呢?
          根據(jù)上面的試驗(yàn):
          向西1234.5公里,就是把原點(diǎn)的第12位數(shù)減1(代表向西1000公里),第7位減2(代表西200公里),第8位減3(代表西30公里),第3位減4(代表西4公里),第6位減5(代表西500米)。

          讓我們真的運(yùn)算一下,看看對不對。我們首先設(shè)立一個原點(diǎn),為了計算方便,我們在北京市找到一個叫做“中東汽修”的地址,其靈圖編碼是:
          6993-0864-6391。我們把它設(shè)為起始點(diǎn)(設(shè)為起始點(diǎn)是為了顯示出來目的地的距離,看看是不是1234.5公里)。
          按照上述的算法,我們計算:
          699308646391
            ↓↓   ↓↓↓    ↓
          695303416390


          點(diǎn)“目的地”,“下一頁”,選擇“編碼定位”,輸入咱們算出的這個695303416390,設(shè)為目的地。好了,現(xiàn)在看到屏幕的顯示了,我們定位的新坐標(biāo),確實(shí)是在原點(diǎn)(起始點(diǎn))的西面1234.5公里處。
          這證明我們的推算是正確的。

          在12位的靈圖編碼中
          第1位數(shù)字,每加1,就向北移動100米左右;每減1,就向南移動100米左右;
          第2位數(shù)字,每減1,就向南移動100公里;
          第3位數(shù)字,每減1,就向西移動1公里;
          第4位數(shù)字,每減1,就向南移動約7米;
          第5位數(shù)字,每加1,就向北移動1公里;
          第6位數(shù)字,每減1,就向西移動100米;
          第7位數(shù)字,每減1,就向西移動100公里;
          第8位數(shù)字,每減1,就向西移動10公里;
          第9位數(shù)字,每加1,就向東移動10米;
          第10位數(shù),每減1,就向南移動1000公里;
          第11位數(shù),每減1,就向南移動10公里;
          第12位數(shù),每減1,就向西移動1000公里。

          在此基礎(chǔ)上進(jìn)一步分析,影響東西方向位置的視作經(jīng)度元素,影響南北方向位置的視作緯度元素。而影響比較大的看作高位,影響小的看作低位。例如,第12位對經(jīng)度影響最大,應(yīng)該是經(jīng)度的最高位,第9位對經(jīng)度的影響最小,應(yīng)該是經(jīng)度的最低位。根據(jù)這樣的原則排列,不難得到這樣的結(jié)果:
          經(jīng)度:
          12,7,83,6,9;
          緯度:
          102,11,5,14;
          我們用一個實(shí)際的地點(diǎn)來說明,在靈圖上取北京四惠橋的坐標(biāo)為7981
          -0364-6391,按照上面說的排列規(guī)則,經(jīng)度值就是 1 6 4 8 3 6,緯度值就是 3 9 9 0 7 1。據(jù)我現(xiàn)場實(shí)測,得出四惠橋的位置是東經(jīng)116度29.062分,北緯39度54.395分。兩者對比可以做出這樣的判斷,靈圖編碼就是2位整數(shù)加4位小數(shù)的經(jīng)緯度(省略了經(jīng)度的百位)。在這里,靈圖編碼的經(jīng)度值164836=16.4836度=16度29.016分,緯度值399071=39.9071度=39度54.426分,與我的實(shí)測比對誤差極小,不僅在簡單的GPS測量誤差允許范圍之內(nèi),而且在電子地圖上取點(diǎn)時光標(biāo)位置的毫厘之差都會導(dǎo)致這種誤差。
          在全國范圍內(nèi)取幾個相距較遠(yuǎn)的點(diǎn)作驗(yàn)證,我在網(wǎng)上找到昆明和廣州的經(jīng)過校準(zhǔn)的OZI地圖作為比對標(biāo)準(zhǔn)。昆明市人民路-青年路交叉口,靈圖編碼5513
          -4427-3200,按上面推算是東經(jīng)102.7143度=102度42.858分,北緯25.0453度=25度2.718分;廣州市天河立交橋的靈圖編碼是6316-3033-0211,按上面推算是東經(jīng)113.3100度=113度18.600分,北緯23.1366度=23度8.196分。與OZI地圖中的經(jīng)緯度比對,沒有眼睛可以分辨出來的誤差。
          至于經(jīng)度中的百位數(shù)可以這樣考慮,在靈圖上中國最西取一點(diǎn)9902
          -7535-1337,換算結(jié)果是東經(jīng)73.5051度,在最東端取一點(diǎn)7803-0850-5443,換算結(jié)果是東經(jīng)135.0085度,所以可以這樣判斷,經(jīng)度最高位如果大于5,百位就是0,如果小于5,百位就是1。

                  現(xiàn)在,可以很方便地使用靈圖編碼轉(zhuǎn)換經(jīng)緯度了。

          posted on 2008-01-31 16:31 wzhongyu 閱讀(5080) 評論(1)  編輯  收藏 所屬分類: Java學(xué)習(xí)

          評論

          # re: 靈圖編碼與經(jīng)緯度轉(zhuǎn)換問題 2010-03-15 10:45 yigongcai

          高人!
          致敬。
            回復(fù)  更多評論   

          我的便捷門:綜合頻道 數(shù)碼頻道 商城頻道 電器頻道 男人頻道 女人頻道 居家玩具 美容頻道 飾品鞋包 食品頻道 臺灣館頻道
          主站蜘蛛池模板: 兰考县| 宜黄县| 祁东县| 厦门市| 大兴区| 栾川县| 安义县| 邵阳市| 鄱阳县| 隆回县| 津市市| 宁阳县| 缙云县| 和林格尔县| 兴国县| 张家港市| 扎赉特旗| 衡阳市| 抚顺县| 利川市| 墨江| 德安县| 合江县| 唐山市| 余江县| 开阳县| 边坝县| 正定县| 兰考县| 南岸区| 韶山市| 万宁市| 彝良县| 子长县| 海丰县| 梁平县| 盱眙县| 洪洞县| 平昌县| 泌阳县| 四平市|