|
转自:Mark Chen 研究院
8 @( H" x8 T! X& R8 c7 M; X原文链接, K- P3 A9 @% L* \
Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案
; ~! ^: m+ m- [ H) {! s6 N5 v2 Z3 T
GPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅$ Q }) j. |# z- Y5 o% k
H2 `/ { a: ^# ~中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口0 x' ^- J; K8 l
f' Z" a% l- U0 r
Google 中国地图偏移接口" c8 N* b, y% `) j' r1 @
: S1 c9 f5 ]' Y5 t0 R1 P8 C7 p
$ i0 R7 f4 l$ a1 e t2 Q; B- p
! G. S/ k! [# n( P/ D2 A# X# g1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.148067' W( s# P- i& l. ~! n
1 b" A$ }# f% h/ w6 i
/ D9 @2 ]" ]; S, ^8 t) g; G
, y: N$ R8 e# C
(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)
9 K7 ^' l5 i" E* B4 {$ L+ n- Q3 l, M6 k2 d; R& d
2. 返回内容中的有效部分:' o" k+ E3 z9 S$ Y) O
" D( T+ x; u: c! k1 S3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])+ D" {- E% Q3 z& A8 K# n
4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开( N J6 X: q7 L2 w2 t; B" O; h; x
, q' P" d. D! h. r0 QVp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义
4 C8 {+ I" u {# n, C, z; V. U J7 ~8 s. \: V. k
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方向上维度偏移像素
9 D* J9 P4 j$ Y* C7 ]3 _& B0 P3 X: o
6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度; P+ U$ q: A2 F
6 Q$ |) ?: [, y
& j5 j& u; y3 m. U8 m3 l" o2 b' i8 U5 n1 y, W- c# i0 y
. V8 G% ]4 J- l
. j# ?% a, Q) \2 }/ O! x$ x' u' x% W
数据经度 每0.01个经纬度一个偏移量2 W/ x7 I" Y& Z; ~" y0 B) n+ o
+ u3 m# {6 z( u- E9 f, T. V总共数据量(9557005)条6 C) w' m% i( A
5 {3 }, {+ b6 {* N* C- T/ d$ A数据格式CSV文件 每一个经度一个文件; L& q, W# u- z$ u& K/ M" Q
' ~* ^+ W5 n. s
从73-134总共62个文件 总大小480MB
! `( I6 Q, l. N- D( i$ ], c8 G! m) k2 j) L
数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)
! B N+ l0 Z, Q: r I4 f# {' z6 R8 f9 M- L. x/ x
此位置经纬度偏移 保留6位小数 定位用足够了 |
|