分辨率
(1)平面坐标系
Resolution,地面分辨率,类似Spatial Resolution(空间分辨率),我们这里主要关注用象元(pixel size)表示的形式:一个像素(pixel)代表的地面尺寸(米)。以天地图为例,Level为1时,图片大小为256*256(4个Tile),那么赤道空间分辨率为:赤道周长/512。其他纬度的空间分辨率则为 纬度圈长度/512,极端的北极则为0。Level为2时,赤道的空间分辨率为 赤道周长/1024,其他纬度为 纬度圈长度除以1024。很明显,Ground Resolution取决于两个参数,缩放级别Level和纬度latitude ,Level决定像素的多少,latitude决定地面距离的长短。
以LEVEL为1级的时候为前提,取屏幕分辨率为96DPI(像素/英寸)
地面分辨率:一像素代表地面的距离(米),单位为像素/米;
Resolution = 实际距离/屏幕上的像素个数 = 实际距离(米)/512 (像素)
比例尺
(1)平面坐标系
比例尺:屏幕上的距离代表的地面的距离,无单位,仅为一个数值
Scale = 512(像素)/屏幕分辨率(像素/英寸) * 0.0254(米/英寸) /实际距离(米)
(2)经纬度
经纬度跟平面的思路差不多,不过由于经纬度的表征距离的时候用的是度数,所以在换算的时候,需要把度数
换成米,其换算公司如下:
Scale = 1 : (96 * 2 * Math.PI * 6378137 * resolution / 360 / 0.0254);
转换代码
export function scale2Resolution(scale, unit) {
debugger
let resolution
if (unit === 'degrees') {
// scale= 96 * 2 * Math.PI * 6378137 * resolution / 360 / 0.0254
resolution = scale * 0.0254 * 360 / 96 / 2 / Math.PI / 6378137;
} else {
resolution = 0.0254 / 96 * scale;
}
return resolution;
}
export function resolution2Scale(resolution, unit) {
debugger
let scale
if (unit === 'degrees') {
scale = 96 * 2 * Math.PI * 6378137 * resolution / 360 / 0.0254
} else {
scale = 96 * resolution / 0.0254
}
return scale;
}