已知:图片尺寸大小(比如宽700dpi,高600dpi),绘图范围(比如经度102-105、纬度33-35)或者需要绘图的geopandas几何数据。
目的:计算合适的缩放级别zoom,能将范围内的几何要素全部展现的图片上,并尽可能的展现更多地图细节。
步骤:1、获取本机电脑显示屏的分辨率和实际物理尺寸,并计算每个DPI对应的实际物理尺寸;
2、计算图片尺寸所对应的实际物理尺寸(单位mm);
3、计算最大最小经度距离m,和最大最小纬度距离(单位m);
4、计算图片尺寸宽度、高度与经纬度距离m的缩放比例,并取最大缩放比例为参考值r;
5、对照天地图各个缩放级别的比例尺,最终确定合适的缩放级别zoom。
具体的代码如下,代码中都给出了详细的注释。
import tkinter as tk
from geopy import distance
import geopandas as gpd
def cal_tianditu_zoom(self,myw=700,myh=600,eqigdf=None):
'''
myw 设定窗口大小宽度dpi,
myh 设定窗口大小高度dpi
eqigdf 要在地图上绘制几何要素的geopandas,用于计算经纬度范围
'''
myw=myw-20
myh=myh-20
#计算要绘图的长和宽,单位米
if eqigdf.shape[0]>3:
eqigdf