本文使用python和cartopy绘制地形图,同时绘制了比例尺。
首先,上图是恭敬的。一些图例符号是错误的。请不要介意。随便表达
只有1:10和1:50的浮雕图,也就是第三个选项“格子”(别问我为什么是中国人,问我告诉你我是浏览器翻译的。)
只需单击并找到您需要下载的内容。反正我电脑里1:10最大的地图画不出来。错误报告显示地图太大。其他一切都很好。根据实际情况下载即可。
下载后是一个压缩包。解压得到XXXXXX TIF文件就好了。可以在代码目录中使用。
事实上,这并不难。我只是告诉你cartopy可以画地形图
#地图周围的经纬度
西 u003d 110
东 u003d 125
南 u003d 20
北 u003d 30
#解决中文乱码问题
#画布设置、投影设置
#边界设置
img_extent u003d [西、东、南、北]
#浮雕地图导入
有些朋友在这里还可以。
#设置经纬度网格和标签,将透明度改为1,就会出现网格alphau003d1
#设置经度和纬度的显示,比如经度70到135,间隔5
def draw\the\scale(y,x,text,length u003d 1.5,lw u003d 5):
#绘制比例函数
#length 表示比例尺在经度上的长度
step u003d length/5#计算步长,绘制五个网格
#画五条黑白线
#画两个长鳞片
#绘制四段
#写作,0500 公里
def drowscale(范围,scale_y,scale_x,scale_text,step u003d 5,lw u003d 10,scale_length u003d 1.5,scale_lw u003d 5):
#scale_length:表示比例尺的长度(以经度为单位,例如1.5经度)
for y in [extent[2],extent[3]] :#绘制上下边框
xmin u003d 范围[0]
而 (xmin < 范围[1]):
xmin u003d xmin+步*2
xmin u003d 范围[0]+步长
而 (xmin < 范围[1]):
xmin u003d xmin+步*2
for x in [extent[0],extent[1]] :#左右画
ymin u003d 范围[2]
而(ymin < 范围[3]):
ymin u003d ymin+步*2
ymin u003d 范围[2]+步长
而(ymin < 范围[3]):
ymin u003d ymin+步*2
drow_the_scale(scale_y,scale_x,scale_text)#绘制比例
这里写了两个函数,每个函数一个。其实就是在地图周围画黑白线,然后在画面中的某个位置画黑白线,形成一个比例尺。可以说是有些巧妙,也很不规范。默认情况下,1 度代表 111 公里。
主要原因是作者找不到cartopy绘图比例的功能。底图可以,但我不想使用它。如果有朋友知道,请留言告诉我。谢谢你。
随便画一些散点信息供朋友们使用。一共五个函数批量绘制散点。只需给出经度和纬度的列表。我随便在上面标了点。
def drowpentagram(ax,points,c u003d 'red',su003d300):
#绘制五个尖角星轴,points,c color,s size
对于点中点:
def drowcircle(ax,points,edgecolors u003d 'red',linewidths u003d 2,su003d300):
#Circle ax,points required, edgecolors color, s size, linewidths line width
对于点中点:
def drowfork(ax,points,c u003d 'blue',linewidths u003d 2,su003d300):
#画十字轴,点,c颜色,s大小,线宽,线宽
对于点中点:
def drowbox(ax,points,edgecolors u003d 'blue',linewidths u003d 2,su003d300):
#绘制正方形 ax,points, required band, edgecolors color, s size, linewidths 线宽
对于点中点:
def drowtriangle(ax,points,edgecolors u003d 'blue',linewidths u003d 2,su003d300):
#绘制三角形 ax,points, required band, edgecolors color, s size, linewidths 线宽
对于点中点:
给出一个legend函数,封装
def drowlegend(ax,x,y,text,step u003d 0.5):
#绘制图例
drowcircle(ax,((x,y),))#画一个红色圆圈
drowcircle(ax,((x,y - step),),edgecolors u003d 'green')#画一个绿色圆圈
drowfork(ax,((x,y - step*2),))#画一个叉子
drowbox(ax,((x,y - step*3),))#画正方形
drowtriangle(ax,((x,y - step*4),))#画三角形
将 numpy 导入为 np
def drowpentagram(ax,points,c u003d 'red',su003d300):
#绘制五个尖角星轴,points,c color,s size
对于点中点:
def drowcircle(ax,points,edgecolors u003d 'red',linewidths u003d 2,su003d300):
#Circle ax,points required, edgecolors color, s size, linewidths line width
对于点中点:
def drowfork(ax,points,c u003d 'blue',linewidths u003d 2,su003d300):
#画十字轴,点,c颜色,s大小,线宽,线宽
对于点中点:
def drowbox(ax,points,edgecolors u003d 'blue',linewidths u003d 2,su003d300):
#绘制正方形 ax,points, required band, edgecolors color, s size, linewidths 线宽
对于点中点:
def drowtriangle(ax,points,edgecolors u003d 'blue',linewidths u003d 2,su003d300):
#绘制三角形 ax,points, required band, edgecolors color, s size, linewidths 线宽
对于点中点:
def draw\the\scale(y,x,text,length u003d 1.5,lw u003d 5):
#绘制比例函数
#length 表示比例尺在经度上的长度
step u003d length/5#计算步长,绘制五个网格
#画五条黑白线
#画两个长鳞片
#绘制四段
#写作,0500 公里
def drowscale(范围,scale_y,scale_x,scale_text,step u003d 5,lw u003d 10,scale_length u003d 1.5,scale_lw u003d 5):
#scale_length:表示比例尺的长度(以经度为单位,例如1.5经度)
for y in [extent[2],extent[3]] :#绘制上下边框
xmin u003d 范围[0]
而 (xmin < 范围[1]):
xmin u003d xmin+步*2
xmin u003d 范围[0]+步长
而 (xmin < 范围[1]):
xmin u003d xmin+步*2
for x in [extent[0],extent[1]] :#左右画
ymin u003d 范围[2]
而(ymin < 范围[3]):
ymin u003d ymin+步*2
ymin u003d 范围[2]+步长
而(ymin < 范围[3]):
ymin u003d ymin+步*2
drow_the_scale(scale_y,scale_x,scale_text)#绘制比例
def drowlegend(ax,x,y,text,step u003d 0.5):
#绘制图例
drowcircle(ax,((x,y),))#画一个红色圆圈
drowcircle(ax,((x,y - step),),edgecolors u003d 'green')#画一个绿色圆圈
drowfork(ax,((x,y - step*2),))#画一个叉子
drowbox(ax,((x,y - step*3),))#画正方形
drowtriangle(ax,((x,y - step*4),))#画三角形
通过
#主函数
如果 __name__ u003du003d '__main__':
points_pentagram u003d [(113.3, 23.23,'Guangzhou')]#五角星坐标和名称
points_circle_red u003d [(116.1, 26.7),(117.1, 27.7)]#红色圆坐标
points_circle_green u003d [(115.1, 25.7),(118.1, 28.7)]#绿色圆坐标
points_fork u003d [(115.1, 26.7),(118.1, 29.7)]#分叉坐标
points_box u003d [(117.1, 26.7),(115.1, 27.7)]#方坐标
points_triangle u003d [(118.1, 26.7),(114.1, 27.7)]#三角坐标
#图例文字说明
text u003d ['大风','冰雹','龙卷风','闪电','强降水']
#地图周围的经纬度
西 u003d 110
东 u003d 125
南 u003d 20
北 u003d 30
#解决中文乱码问题
#画布设置、投影设置
#边界设置
img_extent u003d [西、东、南、北]
#浮雕地图导入
#设置经纬度网格和标签,将透明度改为1,就会出现网格alphau003d1
#设置经度和纬度的显示,比如经度70到135,间隔5
drowscale(img_extent,21,123.1,'500')#绘制比例
drowpentagram(ax,points_pentagram)#画五颗尖角星
drowcircle(ax,points_circle_red)#画一个红色圆圈
drowcircle(ax,points_circle_green,edgecolors u003d 'green')#画一个绿色圆圈
drowfork(ax,points_fork)#画一个叉子
drowbox(ax,points_box)#画正方形
drowtriangle(ax,points_triangle)#画三角形
drowlegend(ax,123.1,24,text,step u003d 0.5)#绘制图例
有朋友知道cartopy自带刻度功能吗?我翻了翻文件,没找到。我的朋友留言帮助我。作者绘制的尺度只有自己的表格,深度不够严谨。
Python社区为您提供最前沿的新闻资讯和知识内容
更多推荐
求助!为什么用InsCode部署会出现无限重定向?
如何重塑熊猫。系列
在哪里可以找到有关 Keras 中默认权重初始化器的文档? [复制]