百度与谷歌地图瓦片组织方式对比
2014-10-26 16:02
295 查看
百度是从中心点经纬度(0,0)度开始计算瓦片,在第1级时百度将世界地图分为4块。
中心点右上部分(中国地区)占1块。
![](http://images.cnblogs.com/cnblogs_com/janehlp/201208/201208271114013424.jpg)
谷歌是从左上角经纬度(-180,90)度开始计算瓦片,在第1级时谷歌将世界地图分为1块。
![](http://images.cnblogs.com/cnblogs_com/janehlp/201208/201208271114022802.jpg)
在第2级时,百度地图(中心点右上部分)分为2块,
这是因为在这级百度的地图分辨率为65536米/像素,分辨率=math.pow(2,(18 - n))。
WGS84球体周长:40075016.685578488,球体周长一半为20037508.34米。
瓦片个数=20037508.34/(65536*256)=1.19。
因此在第2级百度地图(中心点右上部分)有2块瓦片。
![](http://images.cnblogs.com/cnblogs_com/janehlp/201208/201208271114036291.jpg)
瓦片编号类似于Excel表格单元格编号,原点向上和向右为正,向下和向左为负。单元格X,Y编号从0开始,如右上角第一格X=0,Y=0,X是指向右方向即水平,Y是指向上方向即垂直。
而谷歌地图在第2级将世界地图分为4块,瓦片编号是向右和向下,没有负数。
在经纬度(0,0) 的右上角部分即中国区,只有1块瓦片,而百度却是2块。这是为何呢?
这是由于两者在这级的分辨率不同导致的。
经纬度(0,0)右上角瓦片计算:
百度瓦片个数=20037508.34/(65536*256)=1.19,取最大整数为2块。
谷歌瓦片个数=20037508.34/( 78271.5169639999*256)=1块。
百度分辨率计算公式:
Double res = math.pow(2,(18 - n)) // n为层数(1-18)
谷歌分辨率计算公式:
Double tileSize=256 //瓦片尺寸(256*256)
Double initialResolution = 2 * math.pi * 6378137 / tileSize //6378137为球体半径
Double res = initialResolution /math.pow(2,zoom) //zoom为层数(0-21)
![](http://images.cnblogs.com/cnblogs_com/janehlp/201208/201208271114044174.jpg)
ArcGISServer的瓦片组织方式与谷歌类似。如果想在AGS for Flex中采用百度地图作为底图,且想将百度地图下载为离线数据,并发布瓦片地图服务供flex 调用,有什么方法?
以下提供一种解决方案:
1) 开发一个工具,下载百度地图成离线数据。
2) 开发一个工具,将百度地图瓦片编号转成AGS地图瓦片编号。当然这样做的话底图数据就与谷歌地图无法吻合。但我们假设底图只用百度地图,业务图坐标也是从百度中采集的情况。
3) 如何将百度的瓦片编号转成AGS瓦片编号,这个没有什么公式,我建议固定一个经纬度点,并计算该点的百度和谷歌的瓦片编号,做为瓦片转换的参照目标。
以北京天安门的地理坐标点(116.407945,39.91349)计算出百度与谷歌各层瓦片编号。
百度 | 谷歌 | ||||
级别 | 行 | 列 | 级别 | 行 | 列 |
1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 1 | 1 | 0 |
3 | 1 | 0 | 2 | 3 | 1 |
4 | 3 | 1 | 3 | 6 | 2 |
5 | 6 | 2 | 4 | 13 | 5 |
6 | 12 | 4 | 5 | 26 | 12 |
7 | 24 | 9 | 6 | 52 | 24 |
8 | 49 | 18 | 7 | 105 | 48 |
9 | 98 | 36 | 8 | 210 | 97 |
10 | 197 | 73 | 9 | 421 | 194 |
11 | 395 | 147 | 10 | 843 | 387 |
12 | 790 | 294 | 11 | 1685 | 776 |
13 | 1581 | 589 | 12 | 3372 | 1551 |
14 | 3163 | 1178 | 13 | 6744 | 3103 |
15 | 6327 | 2356 | 14 | 13489 | 6207 |
16 | 12654 | 4712 | 15 | 26979 | 12415 |
17 | 25308 | 9425 | 16 | 53958 | 24830 |
18 | 50617 | 18851 | 17 | 107917 | 49661 |
计算公式如下:
谷歌瓦片行编号=[谷歌参照瓦片行编号+(百度行编号 – 百度参照瓦片行编号)] //向右,行为递增
谷歌瓦片列编号=[谷歌参照瓦片列编号- (百度列编号 – 百度参照瓦片列编号)] //向上,列为递减
相关文章推荐
- 百度与谷歌地图瓦片组织方式对比 (修正)
- 百度与谷歌地图瓦片组织方式对比
- 百度与谷歌地图瓦片组织方式对比
- 百度与谷歌地图瓦片组织方式对比
- (Mark)瓦片组织方式
- 如何将谷歌地图导出为百度瓦片
- 如何将谷歌地图导出为百度瓦片
- 如何将谷歌地图导出为百度瓦片
- Android 注册广播的两种方式对比
- OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
- EnterPrice Architech软件团队写作下类图与包图组织方式探讨
- C++定义类和对象的两种方式--对比Java
- java创建线程的三种方式及其对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比
- HashMap三种循环遍历方式及其性能对比
- Postgres中表和元组的组织方式
- 反编译百度地图和谷歌地图APK,分析两者intent-filter隐式启动方式
- HashMap循环遍历方式及其性能对比