小编给大家分享一下matplotlib Basemap中如何加载shp文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
matplotlib是python中的一个画图插件;
matplotlib支持二维图的效果,也支持三维图的效果,在大数据的制作中,可以以地图为底,在旁边加上柱状图的效果,达到一个三维立体的效果,python现成的库有很多,这在开发中就比较方便,可以直接import进来使用。
matplotlib的Basemap中包含解析常用的shp格式矢量数据,通过读取shp文件,可以很方便的在Basemap上进行画图。
下边是根据Basemap的一个例子,说明如何读取shp,并将shp里的数据画在地图上:
#引用相应的类库
import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemap as Basemap# 设置地图的坐标系和坐标显示范围m = Basemap(llcrnrlon=-100.,llcrnrlat=0.,urcrnrlon=-20.,urcrnrlat=57., projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60., resolution ='l',area_thresh=1000.) fig=plt.figure()# 读取shp文件,注意第二个参数是shp文件在地图里的名称,接下来要用的.shp_info = m.readshapefile('huralll020','hurall',drawbounds=False)print(shp_info)#在地图中找到shp文件,读取shp文件中的属性names = []for shapedict in m.hurall_info: cat = shapedict['CATEGORY'] name = shapedict['NAME'] if cat in ['H4','H5'] and name not in names: if name != 'NOT NAMED': names.append(name)print(names)print(len(names))# 根据属性,在地图上画图for shapedict,shape in zip(m.hurall_info,m.hurall): name = shapedict['NAME'] cat = shapedict['CATEGORY'] if name in names: xx,yy = zip(*shape) # plot为在地图上画图 if cat in ['H4','H5']: m.plot(xx,yy,linewidth=1.5,color='r') elif cat in ['H1','H2','H3']: m.plot(xx,yy,color='k')# 在地图上画其他辅助要素,国界,经纬度线等m.drawcoastlines()m.drawcountries()m.drawmapboundary(fill_color='#99ffff')m.fillcontinents(color='#cc9966',lake_color='#99ffff')m.drawparallels(np.arange(10,70,20),labels=[1,1,0,0])m.drawmeridians(np.arange(-100,0,20),labels=[0,0,0,1])#设置图的标题plt.title('Atlantic Hurricane Tracks (Storms Reaching Category 4, 1851-2004)')plt.show()
看完了这篇文章,相信你对“matplotlib Basemap中如何加载shp文件”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4599572/blog/4636865