|
转自:Mark Chen 研究院. H8 _- _" ^& ^+ e- K" w
原文链接7 m7 [ s+ ?% O$ {5 ~# X( x& }$ {
Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案
) F X6 T; y* u) B4 m
3 M2 E* J- n) L5 c! h: H" S) jGPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅
' A4 e& p' _, {- b* d% g& X1 g! q- |& |8 j
中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
- L3 r$ }# F U I1 I
6 f2 S+ R& P9 u) q0 S5 a- } Google 中国地图偏移接口
, W4 _& W) [( O
1 o( o6 K; X X . j0 \& G. U. `8 K' }1 `
O/ A T+ O8 J* b
1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067
6 I w1 e5 v! @$ B- C7 V' U" b3 j* d% M; o+ m$ a
+ F( Q# w# `: U' ], `$ I% v9 H! ^, B$ i
(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)
9 \/ r2 t& W! }! d0 u* L3 e/ T
. | p- m+ D( R2. 返回内容中的有效部分:
$ x% _) s ~, ? }% r
% j! v, r" g! K5 ]9 x) b1 K J; s3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])
9 R( G7 l! p) L5 ]/ S: c3 E. ~. T4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开0 S9 L7 v4 L# g7 A5 i4 l) ?# J
; U" D& K6 ^: @Vp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义8 k$ R6 @# C2 e0 _3 |8 b9 s) T
& }6 W7 M0 z# }; y3 Q2 E6 p" `5. 取回的部分中有效数字为[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方向上维度偏移像素
8 u& Q# r% V. H
0 X" R0 }0 g$ P) h6 V# R6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度" `( |9 s7 a6 \; T1 ~
/ F5 d5 W s) ]1 ~0 `' Q9 I- n, \; t4 i- M7 B ~9 ~
; S J- k) m- j1 u
g: \5 _, J1 T8 {3 A1 w6 w2 P& K7 i0 ]) U% Q: x( c
! a R* E$ p' y1 I
数据经度 每0.01个经纬度一个偏移量0 Q# Y% ]+ Q5 a6 ]" h
- L8 H" ^& N+ f" W* a总共数据量(9557005)条
) f& ]6 c/ B8 |, s9 X
. T, d& A, |: P# o$ v! \数据格式CSV文件 每一个经度一个文件, @- B- n% t$ d- m
7 S3 ?$ o! I+ [. x. M) ^/ C
从73-134总共62个文件 总大小480MB
) f0 c3 o& I& y/ k) r
% o. I' K. G1 `/ h数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)
2 F, [( a6 ~7 q% N% o* }/ s) M2 s5 V
此位置经纬度偏移 保留6位小数 定位用足够了 |
|