电子地图的比例尺和分辨率的相互换算.md

  • 本文解释了主流地图比例尺是如何得来的,供大家在制作地图比例尺时做参考,本人一般使用国家天地图体系地图比例尺。
  • 同时解释了比例尺和分辨率的换算关系,比例尺和分辨率是可以相互换算的:在电子地图缓存生产过程中,只需要设置比例尺即可生成对应分辨率参数;在web端加载地图时,比例尺和分辨率通常只需要设置其中一个参数即可。
  • 本文选取米为单位的全球剖分地图和度为单位的全球剖分地图各层级进行比例尺和坐标系换算说明。(全球剖分可理解为对全球范围的地图进行缓存制作剖分。米为单位的地图如谷歌、百度、高德、腾讯等地图,投影坐标系通常为EPSG:3857,度为单位的地图如国家天地图,国家天地图有米为单位的,也有度为单位的,度为单位的地图坐标系通常为EPSG:4490或EPSG:4326)
  • 三大全球剖分体系地图比例尺:互联网地图比例尺(谷歌、百度、高德、腾讯等)、国家天地图比例尺、GeoServer比例尺。
  • 本地剖分比例尺:常用高斯克吕格投影地图、UTM投影地图也都是米为单位的,这两种投影的地图通常适合用来表示局部地区,做地图缓存时采用局部剖分。(不适合表示全球,必然不会采用全球剖分。)

一、重要知识点参数(前提)

  • 电子地图比例尺:1:2256.994353中的1通常代表1米,2256.994353的单位也是米。(注意:与早期地理课本上对纸质地图比例尺的解释“图上距离1厘米代表实地距离XX米”有所区别哦。)
  • 像素分辨率: 就是图像1个像素所代表的实际距离了,比如卫片生产过程中的精度指标,0.5米卫片、0.3米卫片指的就是这个了,GIS切图过程中比例尺生成的resolution分辨率也就是这个,不同等级对应不同的resolution。
  • 屏幕分辨率: 通常为 96 DPI(dots per inch),即每英寸 96 个像素。1 英寸等于 0.0254 米,即25.4毫米。为什么要用英寸进行度量?因为英寸在历史上和国际标准中被广泛用于测量屏幕尺寸和分辨率,西方定的标准。
    地图缓存图片生产通常都是按照 96 DPI生产的,纵使有高分屏显示器的屏幕分辨率高于96DPI,但在实际地图瓦片生产过程中还是按照96DPI来计算,在高分屏显示器上的显示由WEB端或PC端程序进行二次缩放适配。(虽然地图缓存生产过程可以更改DPI,但一般都约定俗成用默认的96DPI。)

二、米为单位的比例尺和像素分辨率换算(EPSG:3857)

比如百度高德谷歌地图就是米为单位的,在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, 9244648.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.909643),    
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.597164283559817, 2256.994353),    
new LOD(19, 0.298582141647617, 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:4326EPSG:4490。比如国家天地图用的就是EPSG:4490地理坐标。
地理坐标系地图的像素分辨率是以度为单位的,度和米也是可以相互转换的。借助地球半径和圆周计算公式进行计算。

3.1 重要概念

3.1.1 经纬度投影(等距投影)

经纬度投影用的比较多,包括EPSG:4326EPSG:4490都属于经纬度投影,由于内容太多不便展开,自行搜索补课,此处只说1个特点,缩小到全球视图比例尺下高宽比是1:2,(高是南北纬90度之和180度,宽是赤道周长360度,180:360就是1:2了)。
在这里插入图片描述

3.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.49079327356419800555555556米
  • 比例尺: 小数保留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.49079327356419800555555556 米≈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.49079327356419800555555556 =279,541,132.01437204533452085114171
小数部分不同可能是我的计算引入了较多的小数位数,不过完全不影响了,都在误差范围内。

3.7 谷歌百度高德地图是否使用此换算方式?

谷歌百度高德只提供只提供米为单位的地图,然后拾取坐标时把米转为度。

四、本地剖分地图比例尺和分辨率换算

本地剖分比例尺:本地剖分通常只用于米为单位的地图,常用高斯克吕格投影地图、UTM投影地图也都是米为单位的,这两种投影的地图通常适合用来表示局部地区,做地图缓存时采用本地剖分。(不适合表示全球,必然不会采用全球剖分。)
通常基于地图大小确定合适的比例尺,比例尺选择整数。“确定合适的比例尺”较为简单,商业GIS软件会自动确定,或者自己缩放地图到合适的大小,看状态栏显示的比例尺是多少,然后设置差不多的整数作为第一级。(整数是为了切图是计算快)
比例尺确定了后根据上文的公式即可计算分辨率。商业软件通常是1英寸 = 0.0254 米 = 96DPI

五、补充说明

以上计算方法是把地球当做球体计算的(虽然一般把地球看做是扁的椭球),既然国家天地图这么用,各GIS厂商也这么用,那我们采用这个统一的算法比较好,特立独行的搞些地方特色比例尺不兼容大众用的地图不太好。
GIS厂商比例尺小数位数与天地图不一样咋办?通常都在常规应用误差范围内,不用管。GIS厂商为了做地图缓存更快,通常会把小数省略好多位,小数位数减少可减少CPU计算量从而提速。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Q行天下

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值