网站开发站点的文件夹,做爰全过程免费的视网站,无线网二维码推广,上班没事做看什么网站文章目录 1、前言2、代码2.1、指北针2.2、比例尺 3、结果 1、前言
地理信息绘制中添加指北针和比例尺#xff0c;使得图像更专业。
2、代码
2.1、指北针
def add_north(ax, labelsize18, loc_x0.95, loc_y0.99, width0.06, height0.09, pad0.14):画一个… 文章目录 1、前言2、代码2.1、指北针2.2、比例尺 3、结果 1、前言
地理信息绘制中添加指北针和比例尺使得图像更专业。
2、代码
2.1、指北针
def add_north(ax, labelsize18, loc_x0.95, loc_y0.99, width0.06, height0.09, pad0.14):画一个比例尺带N文字注释主要参数如下:param ax: 要画的坐标区域 Axes实例 plt.gca()获取即可:param labelsize: 显示N文字的大小:param loc_x: 以文字下部为中心的占整个ax横向比例:param loc_y: 以文字下部为中心的占整个ax纵向比例:param width: 指南针占ax比例宽度:param height: 指南针占ax比例高度:param pad: 文字符号占ax比例间隙:return: Noneminx, maxx ax.get_xlim()miny, maxy ax.get_ylim()ylen maxy - minyxlen maxx - minxleft [minx xlen*(loc_x - width*.5), miny ylen*(loc_y - pad)]right [minx xlen*(loc_x width*.5), miny ylen*(loc_y - pad)]top [minx xlen*loc_x, miny ylen*(loc_y - pad height)]center [minx xlen*loc_x, left[1] (top[1] - left[1])*.4]triangle mpatches.Polygon([left, top, right, center], colork)ax.text(sN,xminx xlen*loc_x,yminy ylen*(loc_y - pad height),fontsizelabelsize,horizontalalignmentcenter,verticalalignmentbottom)ax.add_patch(triangle)2.2、比例尺
add_scalebar
#-----------函数添加比例尺--------------
def add_scalebar(ax,lon0,lat0,length,size0.45):ax: 坐标轴lon0: 经度lat0: 纬度length: 长度size: 控制粗细和距离的# style 3ax.hlines(y lat0, xmin lon0, xmax lon0length/111, colorsblack, ls-, lw1, label%d km % (length))ax.vlines(x lon0, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw1)ax.vlines(x lon0length/2/111, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw1)ax.vlines(x lon0length/111, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw1)ax.text(lon0length/111,lat0size0.05,%d % (length),horizontalalignment center)ax.text(lon0length/2/111,lat0size0.05,%d % (length/2),horizontalalignment center)ax.text(lon0,lat0size0.05,0,horizontalalignment center)ax.text(lon0length/111/2*3,lat0size0.05,km,horizontalalignment center)# style 1# ax.hlines(ylat0, xmin lon0, xmax lon0length/111, colorsblack, ls-, lw2, label%d km % (length))# ax.vlines(x lon0, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw2)# ax.vlines(x lon0length/111, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw2)# # ax.text(lon0length/2/111,lat0size,500 km,horizontalalignment center)# ax.text(lon0length/2/111,lat0size,%d % (length/2),horizontalalignment center)# ax.text(lon0,lat0size,0,horizontalalignment center)# ax.text(lon0length/111/2*3,lat0size,km,horizontalalignment center)# style 2# ax.hlines(ylat0, xmin lon0, xmax lon0length/111, colorsblack, ls-, lw1, label%d km % (length))# ax.vlines(x lon0, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw1)# ax.vlines(x lon0length/111, ymin lat0-size, ymax lat0size, colorsblack, ls-, lw1)# ax.text(lon0length/111,lat0size,%d km % (length),horizontalalignment center)# ax.text(lon0,lat0size,0,horizontalalignment center)draw_the_scale
def draw_the_scale(ax, y,x,text,length 1.5,lw 5):#画比例尺函数# y代表比例尺所在纬度# x代表比例尺开始的经度# text代表比例尺最后刻度值# length代表比例尺的长度单位为多少个经度# lw代表比例尺的宽度step length/5#计算步长画五格#画黑白线五条ax.hlines(yy,xminx,xmaxx step,colorsblack, ls-, lwlw)ax.hlines(yy,xminx step,xmaxx step*2,colorswhite, ls-, lwlw)ax.hlines(yy,xminx step*2,xmaxx step*3,colorsblack, ls-, lwlw)ax.hlines(yy,xminx step*3,xmaxx step*4,colorswhite, ls-, lwlw)ax.hlines(yy,xminx step*4,xmaxx step*5,colorsblack, ls-, lwlw)#画长刻度两个ax.vlines(x x, ymin y - (lw/100) *3, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x length, ymin y - (lw/100) *3, ymax y lw/100, colorsblack, ls-, lw1)#画段刻度四个ax.vlines(x x step, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*2, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*3, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*4, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)#写字0500kmax.text(x,y (lw/100) *7,0,horizontalalignment center)ax.text(x length,y (lw/100) *7,text,horizontalalignment center)ax.text(x length/2,y (lw/100)*2,km,horizontalalignment center)draw_the_scale改
import matplotlib.patches as mpatches
def draw_the_scale(ax, y0,x0,length500,lw5):#画比例尺函数# y代表比例尺所在纬度# x代表比例尺开始的经度# text代表比例尺最后刻度值# length代表比例尺的长度单位为多少个经度# lw代表比例尺的宽度step_ length/111 #计算步长画五格step step_ * 100/111 /5#画黑白线五条ax.hlines(yy,xminx,xmaxx step,colorsblack, ls-, lwlw)ax.hlines(yy,xminx step,xmaxx step*2,colorswhite, ls-, lwlw)ax.hlines(yy,xminx step*2,xmaxx step*3,colorsblack, ls-, lwlw)ax.hlines(yy,xminx step*3,xmaxx step*4,colorswhite, ls-, lwlw)ax.hlines(yy,xminx step*4,xmaxx step*5,colorsblack, ls-, lwlw)#画长刻度两个ax.vlines(x x, ymin y - (lw/100) *3, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*5, ymin y - (lw/100) *3, ymax y lw/100, colorsblack, ls-, lw1)#画段刻度四个ax.vlines(x x step, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*2, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*3, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*4, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)# #写字0500kmax.text(x,y 0.25,0,horizontalalignment center)ax.text(x step_ -0.25,y 0.25,str(length),horizontalalignment center)ax.text(x step_ 0.25,y-0.25,km,horizontalalignment center)draw_the_scale改2
def draw_the_scale(ax, y,x,length500,num5, lw5):#画比例尺函数# y代表比例尺所在纬度# x代表比例尺开始的经度# text代表比例尺最后刻度值# length代表比例尺的长度单位为多少个经度# num代表要划分的线段数# lw代表比例尺的宽度step_ length/111 # 计算经度跨度step step_ * 100/111 /num # 100km为一格#画黑白线五条for i in range(num):if i%2 0:ax.hlines(yy, xminxi*step, xmaxx (i1)*step,colorsblack, ls-, lwlw)else:ax.hlines(yy,xminx i*step,xmaxx (i1)*step,colorswhite, ls-, lwlw)if i 0:ax.vlines(x x (i1)*step, ymin y - (lw/100) *2, ymax y lw/100, colorsblack, ls-, lw1)#画长刻度两个ax.vlines(x x, ymin y - (lw/100) *3, ymax y lw/100, colorsblack, ls-, lw1)ax.vlines(x x step*num, ymin y - (lw/100) *3, ymax y lw/100, colorsblack, ls-, lw1)# #写字0500kmax.text(x,y 0.25,0,horizontalalignment center)ax.text(x step_ -0.25,y 0.25,str(length),horizontalalignment center)ax.text(x step_ 0.25,y-0.25,km,horizontalalignment center)3、结果