地图影像图数量&存储大小&精度推算

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
参考:http://www.google.cn/maps/vt?lyrs=s&x=0&y=0&z=0
参考:http://www.tianditu.gov.cn
参考:https://baike.baidu.com/item/%E5%A4%A9%E5%9C%B0%E5%9B%BE

通常在网络上用到的影像图,像google,bing,baidu,gaode,tianditu等,这些厂商提供的影像图服务,提供的都是wmts地图服务的地图,预先分层切片的地图服务。
层级的结构形如:
0级1张图片,1级2 * 2张图片,2级4 * 4张图片,3级8 * 8张图片…
理论上最多可以提供0-26级图片服务(第26级的图片数量为426张图片,基本达到了double能表达的精度范围253),google通常提供了全球21级的地图服务,天地图提供了国内的18级地图服务。

不知道大家是否会有这个疑问,全球的影像数据会有多大?应该会很大吧,是在那种数量级上?
如果我下载11级地图:会占用多少空间?会有多少个影像图片?精度能达到多少米?
下面针对这些问题进行分析。

影像图数量&存储大小推算

通常互联网上影像图都是使用webmecator投影方法进行的投影,地球会被投影为:长—2 PI R,宽—2 PI R,长宽一致的正方形。首层(level=0)正好是一张影像图来表达。

注:webmecator支持的纬度范围
Math.PI/2 - (2.0 * Math.atan(Math.exp(-Math.PI))))*180/Math.PI = 85.05112877980659

列表计算数量值:

  • 逐层的x/y的索引值范围:0 <= x/y < Math.pow(2, n)
  • 当前层的图片数量:Math.pow(4,n)
  • 包含下层的总数量:Math.pow(4,n) + Math.pow(4,n-1) + … + Math.pow(4,0)
// 计算包含下层的总数量js方法:
function total(n){
	if(n>0) return Math.pow(4,n) + calc(n-1);
    return 1;
}
层级x/y索引范围当前层图片数量包含下层的总数量
第0层011
第1层0-145
第2层0-31621
第3层0-76485
第4层0-15256341
第5层0-3110241365
第6层0-634,0965,461
第7层0-12716,38421,845
第8层0-25565,53687,381
第9层0-511262,144349,525
第10层0-1,0231,048,5761,398,101
第11层0-2,0474,194,3045,592,405
第12层0-4,09516,777,21622,369,621
第13层0-8,19167,108,86489,478,485
第14层0-16,383268,435,456357,913,941
第15层0-32,7671,073,741,8241,431,655,765
第16层0-65,5354,294,967,2965,726,623,061
第17层0-131,07117,179,869,18422,906,492,245
第18层0-262,14368,719,476,73691,625,968,981
第19层0-524,287274,877,906,944366,503,875,925
第20层0-1,048,5751,099,511,627,7761,466,015,503,701
第21层0-2,097,1514,398,046,511,1045,864,062,014,805

通常一张影像图片大小约为10KB,基于图片的数量*10KB,我们就可以直接得到占用的存储容量大小。

  • Google提供0-21级地图,21级x/y索引值的范围位于 [0, 2^21),第21级的影像图片数量约为4.398万亿张,影像图片的总数量约为5.864万亿张图片,预估占用的存储容量为58.64PB。

  • 天地图提供0-18级地图,如果包含全球的话,图片的总数量约为916亿张图片,预估占用的存储量为916TB。
    不过天地图仅提供国内领土面积的18级地图,其它地方提供的较低精度的地图。所以它共耗费了约30亿张图片,占用存储约30TB—来自百度百科。

精度推算

我们已知了影像图采用的投影方式-webmecator,这种投影方式下,赤道处的面积变形比较小,越靠近高纬度变形会变大很快。

本次采用赤道处,作为计算精度的基准,进行层级精度的推算。
推算的方法:

  • 我们先计算处赤道的周长,然后在计算出在某一层级下用了横向用了多少张图片,就可以得出图片横向表达的实际距离。
  • 有了图片表达的实际距离,再除以图片横向的像素数,就可以得出每个像素表达的距离,也就是我们通常表达的影像图精度。

地球长半轴的长度为(WGS84标准):6,378,137米
地球的赤道周长约为:2 * Math.PI * 6378137 ~= 40,075,017 (m)

就拿天地图的18级来说,x/y索引范围0-262,143,在横向上有262,144张图片:
40,075,017(m) / 262,144 ~= 152.874 (m)
影像图通常都256*256的,横向上有256个像素,每个像素表达长度为:
152.874(m) / 256 ~= 0.597 (m) = 59.7cm
所以,天地图对国内提供的地图精度约为0.6m,这个可以在资料上查到。

计算第n级的精度:2 * Math.PI * 6378137 / Math.pow(2,n) / 256

同样的,对于Google地图来说,21级地图的精度计算为:
2 * Math.PI * 6378137 / Math.pow(2,21) / 256 ~= 0.0746 ~= 7.5cm
可以看出21级地图时,精度到达了7.5cm,精度还是很高的了。

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夜喜雨

稀罕你的喜欢!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值