温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

matplotlib Basemap中如何加载shp文件

发布时间:2021-12-02 17:57:07 来源:亿速云 阅读:1054 作者:小新 栏目:大数据

小编给大家分享一下matplotlib Basemap中如何加载shp文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

matplotlib是python中的一个画图插件;

matplotlib支持二维图的效果,也支持三维图的效果,在大数据的制作中,可以以地图为底,在旁边加上柱状图的效果,达到一个三维立体的效果,python现成的库有很多,这在开发中就比较方便,可以直接import进来使用。

matplotlib的Basemap中包含解析常用的shp格式矢量数据,通过读取shp文件,可以很方便的在Basemap上进行画图。
下边是根据Basemap的一个例子,说明如何读取shp,并将shp里的数据画在地图上:

#引用相应的类库

import numpy as np
import matplotlib.pyplot as plt
from 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文件

看完了这篇文章,相信你对“matplotlib Basemap中如何加载shp文件”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI