|
转自:Mark Chen 研究院
1 a. U! y0 ^$ ?( j5 P原文链接
$ p2 Z5 s `* k/ o* u8 H4 f0 Y! e' BGoogle 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案1 d8 P! N0 ?; q, x( Z: R
- @! M, b* u1 _2 y; z( E
GPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅6 `, @+ F: K- B+ `) G8 v6 Y) W
' u8 ~$ h4 h* \3 H) P
中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
% m' j( P5 f3 T
- ?" c4 b; h" v Google 中国地图偏移接口& S4 c' z# ?4 G" @
" Z) h L4 V( o; i3 j! x P9 B/ ]- D7 t# o4 C/ V5 S$ V
( O( h/ U; R0 m! ]1 ]1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067
' o) G7 h# }3 I8 m# ^5 a
2 i0 H7 r( J& R" ]2 G
9 z' z3 G, H+ \- y: [
0 c( I8 K) }. v \/ c0 h(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)
; W+ W* F* c$ m& m s2 G# b# k% a( L0 P3 ~" d
2. 返回内容中的有效部分:
) L% n% r) b6 Z* F
% C0 q( G# I. l. ` m3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])
9 Z8 v7 R/ D# t4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开
. \% z# Q9 d8 H
% l* W: Z; ^7 q2 b; X3 c0 d3 UVp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义
& l$ J6 b$ {, \# ]- c, h
# g* R6 A( l& I r! e9 R$ B5. 取回的部分中有效数字为[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方向上维度偏移像素
2 \) [9 a( U3 ?3 T& v' [3 i- U1 F3 w5 X1 L' h& G8 |
6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度
4 T1 {$ j9 Z2 ~( b( x9 p& a2 w
( E/ P3 n3 X v8 e; O# ~8 h. \5 x4 ~
0 K; Z2 ]3 e% M, R, P
& N, E o' D# ~9 c: ~- c! m0 v) w# c4 z+ p0 V0 c
. U9 o0 ?, B2 \7 I% B! N
数据经度 每0.01个经纬度一个偏移量
" g) P( R) W4 y# p7 g, t
1 P3 j! r4 K5 d+ A总共数据量(9557005)条$ M; m" n# r, v, |1 \
2 X7 n0 g2 j h4 C) u& M/ c, @
数据格式CSV文件 每一个经度一个文件
[) t4 o+ \0 \+ R" A, W
4 ?% R# E) D7 x3 H/ e! l4 P9 W从73-134总共62个文件 总大小480MB
7 A0 w9 j5 X1 d+ e& k1 |
6 Y5 |) a; P, [5 x9 w# ^ q数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)
) |6 ^. B; k$ u6 t! r# j! X* \" m! X
+ r g9 o9 T! [/ L此位置经纬度偏移 保留6位小数 定位用足够了 |
|