望塵軒中一盞茶

          統計

          留言簿

          友情鏈接

          閱讀排行榜

          評論排行榜

          靈圖編碼與經緯度轉換問題

           

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

           

          眾所周知,包括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位對經度的影響最小,應該是經度的最低位。根據這樣的原則排列,不難得到這樣的結果:
          經度:
          12,7,8369;
          緯度:
          10,211,5,1,4
          我們用一個實際的地點來說明,在靈圖上取北京四惠橋的坐標為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。

                  現在,可以很方便地使用靈圖編碼轉換經緯度了。

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

          評論

          # re: 靈圖編碼與經緯度轉換問題 2010-03-15 10:45 yigongcai

          高人!
          致敬。
            回復  更多評論   

          我的便捷門:綜合頻道 數碼頻道 商城頻道 電器頻道 男人頻道 女人頻道 居家玩具 美容頻道 飾品鞋包 食品頻道 臺灣館頻道
          主站蜘蛛池模板: 抚顺市| 青海省| 普定县| 阳朔县| 文昌市| 永定县| 敖汉旗| 沅陵县| 富宁县| 融水| 麻栗坡县| 石阡县| 博爱县| 遂川县| 金湖县| 泽普县| 蒲江县| 句容市| 尖扎县| 金坛市| 工布江达县| 崇礼县| 兴宁市| 通榆县| 阿克陶县| 康乐县| 苗栗市| 水富县| 沿河| 翼城县| 石首市| 闽清县| 怀化市| 双峰县| 蓝田县| 仪陇县| 宣恩县| 崇义县| 怀化市| 五常市| 岢岚县|