|
转自:Mark Chen 研究院8 T9 O& j8 E- k0 F1 A
原文链接9 t! P& [* W) M [
Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案
* P. n, N; F6 p; ]9 S. v: C* I+ R! B5 t1 E6 q% c- c; n. h+ T
GPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅
1 c+ q9 o* Q3 v$ d- J2 i/ ~' X5 j* o7 n& f$ M4 Z% k
中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
1 ]- i/ e- I. \; t6 a, R3 ]1 B: |, R$ P
Google 中国地图偏移接口
/ D2 X6 P; C! {
3 N) z7 S W- i5 U : O( i5 T0 d0 ^/ [) {
2 Z2 k$ O ^. ~1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067# E& ]6 S5 @3 d; X0 I1 P7 n
1 a/ x' g* F# _8 Y* J
7 A" U$ D5 ~1 ?! e; y0 s4 m" e' \
/ m8 }7 t! }& D" G( \& S(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)0 ^3 v9 O. g7 W: p& @$ K
6 v6 i( z+ [+ f7 v+ q4 F1 b1 W
2. 返回内容中的有效部分:
5 L2 Y( G: a% a+ Q1 K1 Q- a# X( r' B2 l e$ r4 H- s1 h
3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])
. t3 P' Y% G7 o- @6 @# j" [4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开5 |+ }5 A5 V F* h# g8 x, C
# t7 E' a) E" N8 z
Vp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义) b4 u; h; |* h, J
9 a3 H% a6 O4 l' w
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方向上维度偏移像素0 b# }8 v+ F9 h; H
5 f& b. b2 ]2 N8 q7 `! R
6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度
) r7 o% r2 B& \1 M0 t6 A( [& p* ?, S4 p k0 O! P
, K3 d e' Y5 d x: g5 N
/ ^ b8 Q$ d0 _
5 s1 m0 e) H0 }7 a" K$ ]& O! C9 m5 |0 y# J3 h+ T
0 D3 Y, I) C$ T, m* R" l G数据经度 每0.01个经纬度一个偏移量! w0 \% ^+ x5 z" o6 U. d
. X# R' ~8 ]/ ~2 H A总共数据量(9557005)条+ y) X7 z3 K: m, @' v
" M3 a5 [0 K7 G: f6 D数据格式CSV文件 每一个经度一个文件
2 o9 M6 g5 `; v. o: }# a5 L( g* c: ^
从73-134总共62个文件 总大小480MB$ `0 C/ W3 C( n; `# `" }1 A4 r
/ e5 v7 {9 |5 U. X; L
数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)
- l. _3 B' P" T! r. x/ [3 Q7 W1 u. T
2 `5 E/ |) T. v0 B此位置经纬度偏移 保留6位小数 定位用足够了 |
|