|
转自:Mark Chen 研究院: }1 I/ p% e- [8 o
原文链接 |+ W* S6 n6 f
Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案) A* C ~: Q+ j" x5 @" ^* {
0 {( p H# l( H3 j6 \& Z: ZGPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅
( Q& x8 U1 F1 V3 m6 F4 I$ X; z9 l) p3 J2 N) C$ I i
中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现google的地图服务,ditu.gogle开始的都没有偏差,maps.google开头的服务就有偏差,我就开始查找google的取偏移量算法,事前我还是图破解google手机版本的数据,没有成功,估计是使用了自己的压缩或加密算法,最后也没有找到规律,后来才尝试破解web版本的 不过web版本的接口我对于js不是特别熟悉,所以本次破解放弃了分析源代码的步骤,而是直接采用排除法 那就是把地图部分访问的全部地址,一个接一个封杀掉,查找那个气偏移做用的网址 http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067 最后找到了就是这个,记住每次测试用清理浏览器缓存哦,使用fixfox的fildder和adblock就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
; f- @8 t+ t. p: O( z t2 Y6 Q' d- C/ |
Google 中国地图偏移接口
7 A5 t0 U5 z+ I2 M% O7 P+ s" N, ^3 S& R
9 A7 p. A# J( ?) G
; X1 U- r2 W0 G, U1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.1480679 J8 y8 x% @9 r6 p' |
- h% {+ |# s& g9 w% k
5 R. n$ B8 _2 W& P+ z% F/ ^+ |5 P4 J
(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)7 M5 [. I; Q9 ^, u! Y# m$ j$ Z* h
l( y3 o$ u; _' \! n1 k+ Y$ }2. 返回内容中的有效部分:
3 N1 S% o9 I. v. f; r* F' H8 F$ F+ _0 Y( R# |
3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])& V0 v8 | g# s2 b! y/ t3 i7 C
4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开
( E$ {/ K. o4 l3 P, i. w3 P1 M7 R P" Y: D
Vp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义 I; h# t8 f( n- t' ]6 U
" @2 k' X$ f9 N/ T+ X5. 取回的部分中有效数字为[9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -134, 1192, -268]这个数组总共有8组数字,每两个为一组,分为别从11级到18级的地图和卫星图的偏移像素数量,我们前一组数字精确的等于后一组数字除二,我们为了得到最精确的偏移,故选择第18级的偏移量1193,-270,1193为x方向上精度的偏移像素,-270为y方向上维度偏移像素
4 v: c9 K5 |% W. R4 z
w6 P) \% X$ v/ [& c6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度! F7 y, v/ \. U
2 H( n& z% `) s W3 C4 [: E6 E
+ [' W( \+ W: t0 k0 c1 O) j# V! L$ k+ C. c1 l. N/ H8 t/ x
3 {! H$ m% H1 E8 t! E
+ b5 ]5 ~. X6 V1 A
& ~% E! h; C" |! k数据经度 每0.01个经纬度一个偏移量
2 z& M5 U2 I( r$ k Q
; c! ~- k. G: C, Z总共数据量(9557005)条
/ c# s: ^1 Y; u8 A& n+ [; a6 J' n+ H+ n2 X" \$ W
数据格式CSV文件 每一个经度一个文件
3 ~6 W6 r" O9 y# m6 ]$ d
* R# Y0 A% V( }* u8 B: }1 ~从73-134总共62个文件 总大小480MB2 ^) t! q" t/ i( f+ A! d7 W
4 [0 c3 l2 W. K& G' l数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)
% |, n, Q0 `4 s9 c
4 A( S* w, k( ?此位置经纬度偏移 保留6位小数 定位用足够了 |
|