高防服务器

matplotlib Basemap中如何加载shp文件


matplotlib Basemap中如何加载shp文件

发布时间:2021-12-02 17:57:07 来源:高防服务器网 阅读:52 作者:小新 栏目:大数据

小编给大家分享一下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文件”有了一定的了解,如果想了解更多相关知识,欢迎关注高防服务器网行业资讯频道,感谢各位的阅读!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[