百度与谷歌地图瓦片组织方式对比

百度是从中心点经纬度(0,0)度开始计算瓦片,在第1级时百度将世界地图分为4块。

中心点右上部分(中国地区)占1块。
在这里插入图片描述
谷歌是从左上角经纬度(-180,90)度开始计算瓦片,在第1级时谷歌将世界地图分为1块。
在这里插入图片描述
在第2级时,百度地图(中心点右上部分)分为2块,

这是因为在这级百度的地图分辨率为65536米/像素,分辨率=math.pow(2,(18 - n))。

WGS84球体周长:40075016.685578488,球体周长一半为20037508.34米。

瓦片个数=20037508.34/(65536*256)=1.19。

因此在第2级百度地图(中心点右上部分)有2块瓦片。
在这里插入图片描述
瓦片编号类似于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)
在这里插入图片描述
ArcGISServer的瓦片组织方式与谷歌类似。如果想在AGS for Flex中采用百度地图作为底图,且想将百度地图下载为离线数据,并发布瓦片地图服务供flex 调用,有什么方法?

以下提供一种解决方案:

1) 开发一个工具,下载百度地图成离线数据。

2) 开发一个工具,将百度地图瓦片编号转成AGS地图瓦片编号。当然这样做的话底图数据就与谷歌地图无法吻合。但我们假设底图只用百度地图,业务图坐标也是从百度中采集的情况。

3) 如何将百度的瓦片编号转成AGS瓦片编号,这个没有什么公式,我建议固定一个经纬度点,并计算该点的百度和谷歌的瓦片编号,做为瓦片转换的参照目标。

以北京天安门的地理坐标点(116.407945,39.91349)计算出百度与谷歌各层瓦片编号。
在这里插入图片描述
4) 有了这张对照表,我们就可以通过百度的瓦片编号来计算对应的谷歌瓦片编号。

计算公式如下:

谷歌瓦片行编号=[谷歌参照瓦片行编号+(百度行编号 – 百度参照瓦片行编号)] //向右,行为递增

谷歌瓦片列编号=[谷歌参照瓦片列编号- (百度列编号 – 百度参照瓦片列编号)] //向上,列为递减

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值