|
转自:Mark Chen 研究院5 E) C$ y" M c; P: C: H
原文链接
* r6 p. @+ g9 p( b0 v8 IGoogle 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案% L& D+ k' w6 l
% E6 U7 n# L* P/ LGPS相关 2010-04-09 10:40:05 阅读1737 评论6 字号:大中小 订阅' f7 c/ Y5 C; v; v
# ~; W D* L/ b& Y; T. h中国地图和卫星图都存则偏移量,这个是由中国规划局,确定的,一个偏移算法,实际上是没有什么特殊规律的,他的生成算法是有规律,不过这个规律你我都很难拿到,那我们怎么解决这个偏差呢,毕竟做地图开发的都存在卫星图和地图的切换,谁不想让切换以后的地图对上呢! 后来我发现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就够了 然后就是 分析每次返回内容的规律,黄天不负有心人啊,我总算是搞定了,下面是我整理的接口
, i/ u# ? V6 ]$ @3 J6 R4 a( S) n. J* Z# _# b5 i6 A$ `! L2 ^
Google 中国地图偏移接口& U; i+ x/ y; ^7 r
4 I2 j8 P' W" z7 N+ H" M4 q
. o9 f+ u2 R0 z# q. Z6 a. y5 e8 D/ W
! E* D2 b$ L d6 u4 Y
1. 接口地址:http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=39.111195,117.1480671 N# _3 S$ _ Q9 |2 p* ?
4 q& e U5 b. G% i8 K. z W
- @0 z: s7 B+ L6 V$ O
8 E6 q1 X% j3 z6 j: `(注:.cn和.com都可以,我用国内服务器就会选择.cn用美国服务器就会选择.com)
+ Q7 ^" ~+ N' P" J+ F
! h0 A1 K& ?) Q4 S3 Y Q6 |2. 返回内容中的有效部分:
7 `9 \* Q) P) n7 k0 U3 o- r7 \$ B% s& O3 D7 Q# u& M
3. (39.111195, 117.148067, 18, [9, -2, 18, -4, 37, -8, 74, -16, 149, -33, 298, -67, 596, -135, 1193, -270])
4 g* _# \# Z! H4 j3 C" h* @0 F3 S ~4. Spn参数暂时未知实际意义,但是需要上发spn参数,任意两个小数用逗号分开
% Q' }- S0 u9 L: s) C
' ~4 g1 I4 O! Q# ~' pVp参数纬经度值,用逗号分隔,z参数为地图缩放级别,无实际意义
$ B3 A# Y' I, c9 A3 o3 K6 _
9 U7 D k8 e6 `, U+ q5 j5. 取回的部分中有效数字为[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 X& f q# ]$ P# M9 q
1 M' T. |( W6 t8 j6. 经纬度的偏移转换我们需要江经纬度39.111195,117.148067转化为18级像素值25620917 和 55392414,然后分别加上偏移量-270,1193,然后再转化为经纬度39.11231854918217 和117.15446412563324,即位偏移后的经纬度
- `! b' G# H& o1 J, R* u$ o o( N7 I7 ?% N) o, n, I7 f& j
, d) _3 W6 o1 X5 ~" i4 O
4 m1 c N' L; J: s5 W8 q- }$ p2 j
) g: ^8 \6 O7 H. d) K
+ q( S% u9 t( [% H& W& l
3 J' _2 ~" F' M9 R3 u数据经度 每0.01个经纬度一个偏移量; Q- P/ ]* Y7 }# X* `/ [, c- Z* R* y
7 a$ ?6 x* ~! X4 ~' o$ t" A+ t. O总共数据量(9557005)条
# x' C, Q% q, d% E' T4 R1 n& b8 y& l4 A8 d. H2 Y
数据格式CSV文件 每一个经度一个文件
. ^; d @& ~' C
$ s/ ~6 a8 f. ~ G1 ]" e从73-134总共62个文件 总大小480MB
# @$ m/ V. H: f& M: f0 O" y. w5 b* Y* \4 l- y
数据介绍 依次为 经度 纬度 此位置偏移像素X,Y放心(google地图的第18级偏移量,没向上一级除2)( b, _( c+ F: r! d- ~+ n
% N7 q5 X# I! X, _ \; \( Z
此位置经纬度偏移 保留6位小数 定位用足够了 |
|