




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python实现绘制Matlab格式的地图边框的示例代码目录1、Python绘制色斑图2、Python绘制比例尺、指南针3、Python绘制Matlab格式的地图边框
1、Python绘制色斑图
importmatplotlib.pyplotasplt
importnumpyasnp
fromcartopy.mpl.tickerimportLongitudeFormatter,LatitudeFormatter
importcartopy.crsasccrs
importcartopy.featureascfeature
importpandasaspd
importmaskout
importmatplotlib.patchesasmpatches
fromcartopy.io.shapereaderimportReader
frommatplotlibimportrcParams
config={"font.family":'TimesNewRoman',"font.size":16,"mathtext.fontset":'stix'}
rcParams.update(config)
df1=pd.read_excel(r"F:/Rpython/lp37/henanmap/henan.xlsx")
lat=df1['lat']
lon=df1['lon']
PM25=df1['PM25']
#设置经纬度并用scipy包中的函数插值
fromerpolateimportRbf
olon=np.linspace(110,117,100)
olat=np.linspace(31,37,100)
olon,olat=np.meshgrid(olon,olat)
#插值处理,‘linear',‘nearest',‘cubic'
#cubic,gaussian,inverse_multiquadric,linear,multiquadric,quintic,thin_plate
#rain_data_new=griddata((lon,lat),data,(olon,olat),method='linear')
func1=Rbf(lon,lat,PM25,function='linear')
PM25=func1(olon,olat)
print(olon)
print(olat)
print(PM25)
print(olat.shape)
print(PM25.shape)
#建立画布
fig2=plt.figure(figsize=(16,12))
proj=ccrs.PlateCarree()
leftlon,rightlon,lowerlat,upperlat=(110,117,31,37)#根据上下限确定范围,至少为10°
#春------------------------------------------------------------------------------------
#左底宽高
ax=fig2.add_subplot(1,1,1,projection=ccrs.PlateCarree())
#在画布的绝对坐标建立子图
ax.set_extent([leftlon,rightlon,lowerlat,upperlat],crs=ccrs.PlateCarree())
#设置地图属性:加载国界、海岸线,land为灰色
ax.stock_img()
#绘制河南省行政边界
ticks=np.arange(30,80,5)
cf=ax.contourf(olon,olat,PM25,levels=ticks,cmap='gist_rainbow',transform=ccrs.PlateCarree(),extend='both')
clip1=maskout.shp2clip(cf,ax,'F:/Rpython/lp37/henanmap/henan1')
cf=plt.colorbar(cf,ticks=ticks,shrink=0.96,orientation='vertical',extend='both',pad=0.01,aspect=35)
ax.add_feature(cfeature.COASTLINE.with_scale('50m'),linewidth=0.5,zorder=2,color='k')#添加海岸线
ax.add_feature(cfeature.LAKES.with_scale('50m'))
ax.add_feature(cfeature.RIVERS.with_scale('50m'))
ax.add_feature(cfeature.OCEAN.with_scale('50m'))
ax.add_feature(cfeature.LAND.with_scale('50m'))
ax.add_geometries(Reader(r'F:/Rpython/lp37/henanmap/henan1.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=1.2,zorder=1)
ax.add_geometries(Reader(r'F:/Rpython/lp27/data/river1.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='b',linewidth=0.2)
ax.add_geometries(Reader(r'F:/Rpython/lp27/data/china1.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='r',linewidth=1.2)
ax.add_geometries(Reader(r'F:/Rpython/lp27/data/china2.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='r',linewidth=0.8)
ax.add_geometries(Reader(r'F:/Rpython/lp27/data/ne_50m_lakes.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='k',linewidth=0.2)
ax.add_geometries(Reader(r'F:/Rpython/lp37/data37/river/1级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='RoyalBlue',linewidth=0.4)
ax.add_geometries(Reader(r'F:/Rpython/lp37/data37/river/2级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='DodgerBlue',linewidth=0.3)
ax.add_geometries(Reader(r'F:/Rpython/lp37/data37/river/3级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='DeepSkyBlue',linewidth=0.2)
ax.add_geometries(Reader(r'F:/Rpython/lp37/data37/river/4级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='SkyBlue',linewidth=0.15)
ax.add_geometries(Reader(r'F:/Rpython/lp37/data37/river/5级河流.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='LightSkyBlue',linewidth=0.05)
ax.add_geometries(Reader(r'F:/Rpython/lp37/data37/river/主要湖泊.shp').geometries(),ccrs.PlateCarree(),edgecolor='none',linewidth=0,facecolor='#BEE8FF')
#以下6条语句是定义地理坐标标签格式
ax.set_xticks(np.arange(leftlon,rightlon+0.1,1),crs=ccrs.PlateCarree())
ax.set_yticks(np.arange(lowerlat,upperlat+0.1,1),crs=ccrs.PlateCarree())
lon_formatter=LongitudeFormatter()
lat_formatter=LatitudeFormatter()
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)
plt.savefig('F:/Rpython/lp37/plot185.4.png',dpi=600,bbox_inches='tight',pad_inches=0)
plt.show()
2、Python绘制比例尺、指南针
#添加比例尺,指南针
defadd_north(ax,labelsize=18,loc_x=0.95,loc_y=0.99,width=0.06,height=0.09,pad=0.14):
画一个比例尺带'N'文字注释
主要参数如下
:paramax:要画的坐标区域Axes实例plt.gca()获取即可
:paramlabelsize:显示'N'文字的大小
:paramloc_x:以文字下部为中心的占整个ax横向比例
:paramloc_y:以文字下部为中心的占整个ax纵向比例
:paramwidth:指南针占ax比例宽度
:paramheight:指南针占ax比例高度
:parampad:文字符号占ax比例间隙
:return:None
minx,maxx=ax.get_xlim()
miny,maxy=ax.get_ylim()
ylen=maxy-miny
xlen=maxx-minx
left=[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],color='k')
ax.text(s='N',
x=minx+xlen*loc_x,
y=miny+ylen*(loc_y-pad+height),
fontsize=labelsize,
horizontalalignment='center',
verticalalignment='bottom')
ax.add_patch(triangle)
#-----------函数:添加比例尺--------------
defadd_scalebar(ax,lon0,lat0,length,size=0.01):
ax:坐标轴
lon0:经度
lat0:纬度
length:长度
size:控制粗细和距离的
#style3
ax.hlines(y=lat0,xmin=lon0,xmax=lon0+length/111,colors="black",ls="-",lw=1,linewidth=3,label='%dkm'%(length))
ax.vlines(x=lon0,ymin=lat0-size,ymax=lat0+size,colors="black",ls="-",lw=1,linewidth=3)
ax.vlines(x=lon0+length/2/111,ymin=lat0-size,ymax=lat0+size,colors="black",ls="-",lw=1,linewidth=3)
ax.vlines(x=lon0+length/111,ymin=lat0-size,ymax=lat0+size,colors="black",ls="-",lw=1,linewidth=3)
ax.text(lon0+length/111,lat0+size+0.05,'%d'%(length),horizontalalignment='center')
ax.text(lon0+length/2/111,lat0+size+0.05,'%d'%(length/2),horizontalalignment='center')
ax.text(lon0,lat0+size+0.05,'0',horizontalalignment='center')
ax.text(112.28,31.45,'km',horizontalalignment='center')
3、Python绘制Matlab格式的地图边框
defdrow_the_scale(y,x,text,length=1.5,lw=5):
#画比例尺函数
#y代表比例尺所在纬度
#x代表比例尺开始的经度
#text代表比例尺最后刻度值
#length代表比例尺的长度,单位为多少个经度
#lw代表比例尺的宽度
step=length/5#计算步长,画五格
#画黑白线五条
plt.hlines(y=y,xmin=x,xmax=x+step,colors="black",ls="-",lw=lw)
plt.hlines(y=y,xmin=x+step,xmax=x+step*2,colors="white",ls="-",lw=lw)
plt.hlines(y=y,xmin=x+step*2,xmax=x+step*3,colors="black",ls="-",lw=lw)
plt.hlines(y=y,xmin=x+step*3,xmax=x+step*4,colors="white",ls="-",lw=lw)
plt.hlines(y=y,xmin=x+step*4,xmax=x+step*5,colors="black",ls="-",lw=lw)
#画长刻度两个
plt.vlines(x=x,ymin=y-(lw/100)*3,ymax=y+lw/100,colors="black",ls="-",lw=1)
plt.vlines(x=x+length,ymin=y-(lw/100)*3,ymax=y+lw/100,colors="black",ls="-",lw=1)
#画段刻度四个
plt.vlines(x=x+step,ymin=y-(lw/100)*2,ymax=y+lw/100,colors="black",ls="-",lw=1)
plt.vlines(x=x+step*2,ymin=y-(lw/100)*2,ymax=y+lw/100,colors="black",ls="-",lw=1)
plt.vlines(x=x+step*3,ymin=y-(lw/100)*2,ymax=y+lw/100,colors="black",ls="-",lw=1)
plt.vlines(x=x+step*4,ymin=y-(lw/100)*2,ymax=y+lw/100,colors="black",ls="-",lw=1)
#写字,0,500,km
plt.text(x,y-(lw/100)*7,'0',horizontalalignment='center')
plt.text(x+length,y-(lw/100)*7,text,horizontalalignment='center')
plt.text(x+length/2,y+(lw/100)*2,'km',horizontalalignment='center')
defdrowscale(extent,scale_y,scale_x,scale_text,step=5,lw=10,scale_length=1.5,scale_lw=5):
#画地图黑白边框和比例尺
#extent:表示四周经纬度[west,east,south,north]
#scale_y,scale_x,scale_text:代表比例尺的位置,纬度,经度,刻度值
#step:表示步长,一格代表几个经纬度
#lw:代表边框
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 能源天然气综合利用项目可行性研究报告(范文参考)
- 五六年级健康教育课程要点解析
- 四川省雅安市雅安中学2023-2024学年高一上学期1月月考物理 含解析
- 安徽省合肥市重点中学2023-2024学年高二上学期期中联考数学含解析
- 辽宁科技大学《土木工程施工技术B》2023-2024学年第二学期期末试卷
- 大理护理职业学院《汽车检测与故障诊断技术》2023-2024学年第二学期期末试卷
- 珠海艺术职业学院《视频大数据分析》2023-2024学年第二学期期末试卷
- 锦州医科大学《软件系统分析与设计》2023-2024学年第二学期期末试卷
- 新疆政法学院《嵌入式系统开发与应用》2023-2024学年第二学期期末试卷
- 江西工业工程职业技术学院《安全及认证》2023-2024学年第二学期期末试卷
- 护理查房(抑郁发作)
- 2023年新高考天津数学高考真题(解析版)
- 小学英语沪教版单词表(测试版)
- 博物馆物业服务投标方案(技术方案)
- 2024年高级电工职业鉴定考试题库-下(多选、判断题)
- GB/T 32399-2024信息技术云计算参考架构
- 2024-2030年中国邮轮行业市场发展状况及发展前景与趋势研究报告
- 文言文二则 囊萤夜读 公开课一等奖创新教学设计+说课稿+(共25张)
- 2023年山东烟台中考满分作文《这一路风光真好》
- 第18课 科技文化成就 新授课课件-2024-2025学年统编版八年级历史下册
- 孵化器与产业园区协同发展
评论
0/150
提交评论