|
转自:Mark Chen 研究院
5 g" H3 z- [& y! w `5 b* w* }原文链接
1 s4 M. u7 Y a( c; ~+ e3 CGoogle 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案9 O) q( T* l: R9 h( i
8 v0 Q9 {8 H; g4 @( A7 l( AGPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅0 |3 e4 S" s+ C: C0 b; L5 J, E
1 ^6 C8 H: \- ?/ M2 {0 v! f5 b
中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
7 B4 B/ }; o$ s
& ]0 I. Y: j8 F- M5 z Google 中国地图偏移接口( |/ i* U3 e% i7 z3 V
3 B& `" M) C( o
' y# p* `" d$ X2 M/ x+ `
5 g; Z3 e2 H' r6 ]
1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067
2 I C4 C5 ~! ], p& L. y
* ]* l. \9 J5 b8 r
! f5 ?1 |7 W2 I( Q) @! \" R8 I# ~2 p! A. a0 r% y- ], H
(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)
/ |' r# ]; I: V7 I6 R. t9 [( S0 c
2. 返回内容中的有效部分:
2 q0 r0 g; w8 \6 v: T, c9 a, S, L& H
3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270]) S/ r$ c& N3 `8 i8 [/ I Y
4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开/ \( l: j( t6 m w
( ^# X7 \5 v9 W( M! OVp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义
* q! S [3 H6 N8 J
! V5 H4 t, ~1 \% m) m; b1 C# Z5. 取回的部分中有效数字为[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方向上维度偏移像素
0 A2 z7 ] x/ u* s$ c4 p7 l1 E
1 z2 i# s# g7 E6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度
+ g7 g# @3 G4 _$ y7 S! m n" [/ i" K2 @# |- ^
# @: @& U) p# P( p( p) u; H+ {0 }5 Y g' J1 P2 U7 x
/ L6 [' f u7 `9 J; A- f, {6 Q8 q5 N$ F e1 ?
+ m' [9 `+ w+ G, y数据经度 每0.01个经纬度一个偏移量
/ l" J; C7 W& `" e
' Z4 O- `; L7 z% Q" {9 h总共数据量(9557005)条) p2 [0 h; B% L' p% S2 u
/ O% L' T3 [' R
数据格式CSV文件 每一个经度一个文件& [) |; P6 K' D; j
1 t7 ] o+ b- q! |0 Y9 p从73-134总共62个文件 总大小480MB
0 y( x8 S. U0 o% J& o. g
+ y& T6 _$ e( C) d& y数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2). s% O& W0 ? X( R6 e& ?! ~
2 _: _5 M2 N" a F此位置经纬度偏移 保留6位小数 定位用足够了 |
|