Autonavi,高德系地圖(google地圖、mapabc地圖、騰訊的soso地圖等,在地圖下方有?autonavi.?mapabc 版權(quán)信息的)
?
高德為互聯(lián)網(wǎng)/移動互聯(lián)網(wǎng)用戶和網(wǎng)站提供互聯(lián)網(wǎng)地圖(Mapabc.com)服務(wù)、地圖API服務(wù)及基礎(chǔ)地圖服務(wù)。目前,MapABC地圖網(wǎng)站已經(jīng)成為中 國知名的地圖網(wǎng)站及地圖API的窗口。高德同時還為谷歌、騰訊、新浪、阿里巴巴、微軟必應(yīng)、京東商城等著名互聯(lián)網(wǎng)網(wǎng)站提供基礎(chǔ)地圖服務(wù)支撐。而通過高德提供的地圖API服務(wù),已經(jīng)有包括人人、搜房、趕集、拉手等3萬多家互聯(lián)網(wǎng)網(wǎng)站/移動互聯(lián)網(wǎng)應(yīng)用開發(fā)者構(gòu)建起了自己的地圖服務(wù)解決方案。
?
上面一段是高德網(wǎng)站原文復(fù)制,但絕不是為了打廣告。。。。。只是提示有哪些地圖是使用了高德的基礎(chǔ)地圖服務(wù)。
?
根據(jù)中國的相關(guān)法規(guī),在國內(nèi)發(fā)行的民用地圖產(chǎn)品不允許使用真實(shí)坐標(biāo),必須加入一定偏移(出于國家安全考慮)。由于是相對偏移,并不會影響用戶的使用。這種偏移是通過測繪部門的國家保密插件來實(shí)現(xiàn)的。
國家保密插件,也叫做加密插件或者加偏或者SM模組,其實(shí)就是對真實(shí)坐標(biāo)系統(tǒng)進(jìn)行人為地加偏處理,按照幾行代碼的算法,將真實(shí)的坐標(biāo)加密成虛假的坐標(biāo),而這個加偏并不是線性的加偏,所以各地的偏移情況有所不同。
所有電子地圖所有導(dǎo)航設(shè)備,都需要加入國家保密插件。第一步,地圖公司測繪地圖,測繪完成后,送到國家測繪局,將真實(shí)坐標(biāo)的電子地圖,加密成“保密坐標(biāo)“,這樣的地圖才是可以出版和發(fā)布的,然后才可以讓GPS公司處理。第二步,所有GPS公司,只要需要汽車導(dǎo)航的,需要用到導(dǎo)航電子地圖的,統(tǒng)統(tǒng)需要在軟件中加入國家保密算法,將Com口讀出來的真實(shí)的坐標(biāo)信號,加密轉(zhuǎn)換成國家要求的保密的坐標(biāo),這樣,GPS導(dǎo)航儀和導(dǎo)航電子地圖就可以完全匹配,GPS也就可以正常工作。
目前中國的幾家互聯(lián)網(wǎng)地圖公司(百度地圖、搜狗地圖、谷歌地圖、Mapbar等)也模仿國家加密的做法,在國家加密的基礎(chǔ)上又加入了自己的加密量,目的是防止競爭對手抓取、分析自家的數(shù)據(jù)。
地圖的偏移算法通常有幾種:一種是線性偏移,這種偏移算法容易被破解,使用不多;另一種非線性,在不同的區(qū)域,偏移的值和方向各有不通(如偏移字典)。因此破解地圖偏移最常見的一種做法是:同名點(diǎn)計(jì)算。即知道不同地圖上相同點(diǎn)的坐標(biāo),再計(jì)算這些點(diǎn)坐標(biāo)之間的差值。這種方法就依賴于同名點(diǎn)數(shù)量和分布程度。
?
上面都是廢話,下面給出一網(wǎng)上有一強(qiáng)人破解了地圖偏移的方法:
Google 中國地圖偏移接口
接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067(注:.cn和.com都可以,我用國內(nèi)服務(wù)器就會選擇.cn用美國服務(wù)器就會選擇.com)
返回內(nèi)容中的有效部分 (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270]),Spn參數(shù)暫時未知實(shí)際意義,但是需要上發(fā)spn參數(shù),任意兩個小數(shù)用逗號分開Vp參數(shù)緯經(jīng)度值,用逗號分隔,z參數(shù)為地圖縮放級別,無實(shí)際意義
取回的部分中有效數(shù)字為[9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -134,?1192, -268]這個數(shù)組總共有8組數(shù)字,每兩個為一組,分為別從11級到18級的地圖和衛(wèi)星圖的偏移像素?cái)?shù)量,我們前一組數(shù)字精確的等于后一組數(shù)字除二,我們?yōu)榱说玫阶罹_的偏移,故選擇第18級的偏移量,1193為x方向上精度的偏移像素,-270為y方向上維度偏移像素
經(jīng)緯度的偏移轉(zhuǎn)換,我們需要將經(jīng)緯度39.111195,117.148067轉(zhuǎn)化為18級像素值25620917 和 55392414,然后分別加上偏移量-270,1193,然后再轉(zhuǎn)化為經(jīng)緯度39.11231854918217 和117.15446412563324,即位偏移后的經(jīng)緯度
(精度指的是當(dāng)時偏移數(shù)據(jù)的間隔,而不是每條數(shù)據(jù)的精度,0.01版本可以達(dá)到18級5個像素以內(nèi)的糾偏精度)
以上方法經(jīng)過本人測試,得到的經(jīng)緯度和GPS儀器的位置完全吻合。不進(jìn)行糾偏操作,誤差范圍大概有300-500米。
低精度版本: (0.1 精度) 適合個人開發(fā)(可以免費(fèi)提供)
高精度版本: (0.01 精度) 適合商業(yè)應(yīng)用(5米之內(nèi),有貼子說精度在1米,有點(diǎn)夸張了,再說GPS技術(shù)也有誤差(10米))。
還有說是有糾偏算法的,既然在每個經(jīng)緯度點(diǎn)的偏移量都不同,而且偏移量的變化也沒什么規(guī)律,對于這種偏移算法的,我只能心底感慨一下了。
?
0.01精度的有近1000W條數(shù)據(jù)。截圖為證:
?
列abcd依次為:LNG*100 LAT* 100 OFFSET_X OFFSET_Y
?
大家可能疑問,為什么要*100,為什么不直接把偏移經(jīng)緯度算出來,而是存上偏移像素。我只好告訴大家,112.00是double類型(8字節(jié))。而11200我可以只存int型(4字節(jié))。同理偏移像素都是.0000級別的double了。按照存儲算字節(jié)數(shù),我想這種存法應(yīng)該可以節(jié)省數(shù)據(jù)庫大小,沒準(zhǔn)查詢速度還快一些。。。。。存儲成字符的,實(shí)在不推薦。所以說,有時候做的多未必好,呵呵
轉(zhuǎn)自:http://qing.weibo.com/tj/5f84cd6e33001ntr.html