根据地图级别计算地图分辨率分母值
def zoom_to_scale_denom(zoom):# epsg3857 epsg900913# https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Resolution_and_Scalemap_width_in_metres = 40075016.68557849 # 地球周长,赤道长度tile_width_in_pixels = 256.0 # 切片大小standardized_pixel_size = 0.00028 # 每像素的大小,ppi 90.7map_width_in_pixels = tile_width_in_pixels*(2.0**zoom) # 地图在当前级别下的宽度,单位像素return str(map_width_in_metres/(map_width_in_pixels * standardized_pixel_size))
计算真实的像素大小值
假设要将地图渲染到实际分辨率为每英寸100像素(点)的显示器上,此时分辨率为100ppi(dpi,1点=1像素),计算像素的真实值:
100 ppi = 1/100 inches # 每像素的真是大小,单位英寸
1 / 100 inches * 25.4 mm/inch = 0.254 mm # 像素大小,1 英寸=25.4 毫米
0.254 mm * 0.001 m/mm = 0.000254 m # 单位转换成米像素实际长度:pixel_size_in_meter = 1 / PPI_VALUE * 25.4 * 0.001 # 同上面方法中得 0.00028 值
zoom levels和scale分母值对比
# 根据以上公式计算
zoom level=1 scale_denom=279541132.014
zoom level=2 scale_denom=139770566.007
zoom level=3 scale_denom=69885283.0036
zoom level=4 scale_denom=34942641.5018
zoom level=5 scale_denom=17471320.7509
zoom level=6 scale_denom=8735660.37545
zoom level=7 scale_denom=4367830.18772
zoom level=8 scale_denom=2183915.09386
zoom level=9 scale_denom=1091957.54693
zoom level=10 scale_denom=545978.773466
zoom level=11 scale_denom=272989.386733
zoom level=12 scale_denom=136494.693366
zoom level=13 scale_denom=68247.3466832
zoom level=14 scale_denom=34123.6733416
zoom level=15 scale_denom=17061.8366708
zoom level=16 scale_denom=8530.9183354
zoom level=17 scale_denom=4265.4591677
zoom level=18 scale_denom=2132.72958385