比如百度高德谷歌地图就是米为单位的,在GIS数据生产中的WEB墨卡托投影数据(EPSG:3857)是米为单位的,高斯克吕格坐标的GIS数据也是米为单位的,总之大部分都是米为单位的。
2.1 计算思路和公式 2.1.1 已知比例尺计算像素分辨率 思路:比例尺分母除以1米对应的屏幕点数量就是地图对应比例尺下的像素分辨率。通过自定义的比例尺知道了1米对应的实际长度,用这个(实际长度)除以(1米对应的屏幕点数),即可得到每个屏幕点对应的实际长度,即像素分辨率。1米对应的屏幕点数:1英寸 = 0.0254 米 = 96DPI 1米=(1米/0.0254米) 英寸 ≈ 39.37 英寸 1米=(1米/0.0254米)*96DPI = 96/0.0254 DPI ≈ 3779.52756 DPI
像素分辨率计算公式: 比如比例尺1:2256.994353,用参数 scale 代表比例尺的分母2256.994353,像素分辨率用resolution表示, resolution=scale/(96/0.0254)=scale*0.0254/96 所以像素分辨率的计算公式为: Resolution = Scale * 0.0254 / 96 2.1.2 已知像素分辨率计算比例尺 同样也可以在已知像素分辨率的情况下计算出比例尺: Scale = Resolution * 96 / 0.0254 2.2 英寸与米的换算关系(为什么天地图比例尺与互联网大厂地图比例尺不同?)*现在通用的单位换算是1英寸 = 0.0254 米,天地图沿用了这一换算关系,由于早期使用的换算单位还是1英寸≈0.0254000508米,谷歌、百度、高德等互联网大厂地图沿用了早期的1英寸≈0.0254000508米,因此天地图比例尺与互联网大厂地图比例尺不同。 1英寸≈0.0254000508米换算由来可参考这两个网站 https://scienceworld.wolfram.com/physics/Inch.html https://www.cnblogs.com/cehui0303/p/10978011.html
2.3 验证(用谷歌、百度、高德的比例尺进行验证)(现在通用的单位换算是1英寸 = 0.0254 米,由于早期使用的换算单位还是1英寸≈0.0254000508米,谷歌、百度、高德等互联网地图沿用了早期的1英寸≈0.0254000508米,所以接下来验证换算公式请用0.0254000508替换公式中的0.0254)
Scale = Resolution * 96 / 0.0254000508公式可基于下面 提供的参数进行验证,比如new LOD(0, 156543.033928, 591657527.591555) 中,156543.033928 代表像素分辨率resolution,591657527.591555代表比例尺的分母scale,可自行填入上面的公式进行验证,小数略微有差异是正常现象,小数位数和四舍五入的原因引起的少许差异,在误差允许范围内。
提供谷歌、百度、高德的比例尺用于自行验证公式 new LOD(0, 156543.033928, 591657527.591555), new LOD(1, 78271.5169639999, 295828763.795777), new LOD(2, 39135.7584820001, 147914381.897889), new LOD(3, 19567.8792409999, 73957190.948944), new LOD(4, 9783.93962049996, 36978595.474472), new LOD(5, 4891.96981024998, 18489297.737236), new LOD(6, 2445.98490512499, 9244*8.868618), new LOD(7, 1222.99245256249, 4622324.434309), new LOD(8, 611.49622628138, 2311162.217155), new LOD(9, 305.748113140558, 1155581.108577), new LOD(10, 152.874056570411, 577790.554289), new LOD(11, 76.4370282850732, 288895.277144), new LOD(12, 38.2185141425366, 144447.638572), new LOD(13, 19.1092570712683, 72223.819286), new LOD(14, 9.55462853563415, 36111.909*3), new LOD(15, 4.77731426794937, 18055.954822), new LOD(16, 2.38865713397468, 9027.977411), new LOD(17, 1.19432856685505, 4513.988705), new LOD(18, 0.5971*283559817, 2256.994353), new LOD(19, 0.298582141*7617, 1128.497176) 2.4 验证(用天地图比例尺进行验证)1英寸 = 0.0254 米代入对应的公式计算即可,天地图比例尺在对应的天地图WMTS服务里查看,略过,如何查看国家天地图WMTS比例尺参数自行补课。
2.5 GeoServer比例尺验证GeoServer开源软件使用了1英寸=90.71446714322像素和1英寸 = 0.0254 米进行计算。感兴趣自行根据计算公式验证。 GeoServer使用的像素分辨率有点个性,根据OGC规范定义的dpi (dpi假设像素的物理距离为0.28mm)计算的比例值的像素矩阵集。0.28毫米每像素= 0.0110236英寸每像素或90.71446714322像素每英寸。
三、度为单位的比例尺和像素分辨率换算(EPSG:4326 或 EPSG:4490)常见于地理坐标系地图,包括EPSG:4326和EPSG:4490。比如国家天地图用的就是EPSG:4490地理坐标。 地理坐标系地图的像素分辨率是以度为单位的,度和米也是可以相互转换的。借助地球半径和圆周计算公式进行计算。
3.1 重要概念 3.1.1 经纬度投影(等距投影)经纬度投影用的比较多,包括EPSG:4326和EPSG:4490都属于经纬度投影,由于内容太多不便展开,自行搜索补课,此处只说1个特点,缩小到全球视图比例尺下高宽比是1:2,(高是南北纬90度之和180度,宽是赤道周长360度,180:360就是1:2了)。 
电子地图最终成果通常需要做成小图片便于在互联网传输,把上图从中间一分为二(从上到下),地理坐标的电子地图第一个层级通常做成两个 256 x 256 像素的瓦片。X方向两个瓦片,Y方向1个瓦片。
3.2 第一层级的分辨率北纬90°到南纬90°共180°,180°/256像素=0.703125°/像素
3.3 其他层级的分辨率第二级的分辨率用第一级的除以2即可,以此类推。
3.4 第一级分辨率换算成比例尺(以国家天地图为例) 地球半径: WGS84和CGCS2000都是6378137.0 感兴趣的话地球半径等参数参考该地址 https://blog.csdn.net/wokaowokaowokao12345/article/details/127447010圆周率:3.141592653589793(不能取 3.14 哦,误差是天文数字。)度转米: 借助地球半径可以计算赤道周长2πr自行调用计算器进行计算,周长/360度就是地球上1度对应的长度111319.4907932735*19800555555556米比例尺: 小数保留7位吧。小数有保留6位的,也有保留4位的,如果小数位数太多听说计算机做切片过程计算很吃力,但天地图的比例尺小数取7位(末位4舍5入),我们计算得出的比例尺就保留7位吧。 计算结果对比天地图官网的比例尺。 https://t0.tianditu.gov.cn/img_w/wmts?request=getcapabilities&tk=07e76b620a5bdbe2caef22edbe67e4d5
1米对应的DPI数: 前面已经推导过,不再重复。 1米=(1米/0.0254米)*96DPI = 96/0.0254 DPI
第一级的像素分辨率:(精准无误) 1像素=180°/256像素=0.703125°/像素
第一级的比例尺: 1米的像素数量 x 每个像素的分辨率 (96/0.0254)* 0.703125 度= (0.703125 * 96/0.0254)* 111319.4907932735*19800555555556 米≈295829355.45456557米≈295829355.4545656米
所以CGCS2000第一级的比例尺就是295829355.4545656米,和上面天地图链接里的对比是一致的。 商业GIS软件的比例尺结果一般只保留3位小数(有利于加快切片计算生成速度),比如超图软件的第一级比例尺就是295829355.455米。
3.5 其他级别的分辨率与比例尺换算(以国家天地图为例)上面已经进行了第一级的换算推导,这种经纬度投影地图其他级别的分辨率和比例尺直接基于上一级的除以2就是了,或者基于上一级的分辨率除以2得到下一级的分辨率(非常准确),再由得到的分辨率推算比例尺。依此类推。
3.6 GeoServer的分辨率换算比例尺GeoServer自带了EPSG:4326的网格集(分辨率与比例尺的集合),但比例尺与天地图的计算结果存在较大差异,啥原因呢?GeoServer使用了1英寸=90.71446714322像素和1英寸 = 0.0254 米。 GeoServer使用的像素分辨率有点个性,根据OGC规范定义的dpi (dpi假设像素的物理距离为0.28mm)计算的比例值的像素矩阵集。0.28毫米每像素= 0.0110236英寸每像素或90.71446714322像素每英寸。https://www.cnblogs.com/cehui0303/p/10978011.html GeoServer的比例尺:
基于推导的公式计算就得到GeoServer的结果了0.703125 × 90.71428571429 ÷ 0.0254 × 111319.4907932735*19800555555556 =279,541,132.01437204533452085114171。 小数部分不同可能是我的计算引入了较多的小数位数,不过完全不影响了,都在误差范围内。
谷歌百度高德只提供只提供米为单位的地图,然后拾取坐标时把米转为度。
四、本地剖分地图比例尺和分辨率换算本地剖分比例尺:本地剖分通常只用于米为单位的地图,常用高斯克吕格投影地图、UTM投影地图也都是米为单位的,这两种投影的地图通常适合用来表示*部地区,做地图缓存时采用本地剖分。(不适合表示全球,必然不会采用全球剖分。) 通常基于地图大小确定合适的比例尺,比例尺选择整数。“确定合适的比例尺”较为简单,商业GIS软件会自动确定,或者自己缩放地图到合适的大小,看状态栏显示的比例尺是多少,然后设置差不多的整数作为第一级。(整数是为了切图是计算快) 比例尺确定了后根据上文的公式即可计算分辨率。商业软件通常是1英寸 = 0.0254 米 = 96DPI。
五、补充说明以上计算方法是把地球当做球体计算的(虽然一般把地球看做是扁的椭球),既然国家天地图这么用,各GIS厂商也这么用,那我们采用这个统一的算法比较好,特立独行的搞些地方特色比例尺不兼容大众用的地图不太好。 GIS厂商比例尺小数位数与天地图不一样咋办?通常都在常规应用误差范围内,不用管。GIS厂商为了做地图缓存更快,通常会把小数省略好多位,小数位数减少可减少CPU计算量从而提速。