|
转自:Mark Chen 研究院* W4 [7 Y, Y4 _2 j% Z* j9 a* [- F
原文链接
, |% H4 f) l7 ^) t+ t# B8 ^Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案
& @4 w9 h& K) u% H/ \) V1 k- \
; s$ z" w. p- [' k) a4 rGPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅
% y7 s, \6 F! r U% q8 N
( Q, V, ~ R9 m# 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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
' ^; G9 y% c1 D# g; M# g
+ p4 u' Q; g. C0 D5 t Google 中国地图偏移接口3 V; c2 q5 ?$ X* A9 z1 O& x! R
9 @( B& w+ j6 d3 P& ^7 [+ v! q% P
3 q+ Z) i) g. T+ ~2 P. x) \3 n& C) ]0 P, q Y: M2 p
1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067
) T7 ~: d9 g' _6 f+ ^0 _: x
3 t7 M$ g+ _( ^8 m! \6 I: \
n. f4 @7 R# n; z+ R) r2 V w
" g; T1 w& u3 z& k! D(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)
8 x4 G) F9 s+ Z1 K- A9 V6 S
. k7 f' H! E# c% I# ^2. 返回内容中的有效部分:3 g6 x* b1 I2 Q6 ]0 N
, r6 Z" d$ Q6 F6 ]6 @
3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])
! `7 m( Z5 I- u+ |4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开5 C) |6 U8 u" L& D) S
/ B8 o5 a( f! r: y, j+ }
Vp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义
+ g! A7 A' Z( n, I5 n' i2 l0 Q! Q! x: h- H1 p! x7 T9 G
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方向上维度偏移像素
7 J4 m! z8 z7 `" D- @- G9 m. ^1 D) ?$ G3 p/ ?
6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度
) ?% E* m) q* r' q7 D. J |' w2 j7 x |0 L; W, E* Z# O
0 n% g- g6 \8 y. _
?+ Q8 z+ [7 }& H: p8 Y @9 W" {5 f$ [+ T# S! I
! c' x# P+ s$ a" J
+ s f" Q* F+ y0 x% R5 P
数据经度 每0.01个经纬度一个偏移量, m8 i; G2 {0 \4 w9 u. i% \4 \
J( E9 X3 |# T3 ]
总共数据量(9557005)条5 [# G6 U0 }5 W2 A6 `" \4 N1 ^. T( Z
' w$ M4 b( e- F+ w- B; B
数据格式CSV文件 每一个经度一个文件
4 Z, M/ b* A- S& c l
: Y" V$ s( f) }从73-134总共62个文件 总大小480MB3 H _' t/ E% D8 Y
) y1 }) g0 W% \6 F- a
数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)
: |9 Z* M, o" ?
0 w) A. _, [) m7 S* F7 o* `此位置经纬度偏移 保留6位小数 定位用足够了 |
|