import shapefile
from matplotlib import pyplot as plt
border_shape=shapefile.Reader(“D:\…\ne_10m_rivers_lake_centerlines.shp”)
#通过创建reader类的对象进行shapefile文件的读取
border=border_shape.shapes()
# .shapes()读取几何数据信息,存放着该文件中所有对象的 几何数据
#border是一个列表
border_points = border[0].points
#返回第1个对象的所有点坐标
#border_points = [(x1,y1),(x2,y2),(x3,y3),…]
x,y = zip(*border_points)
#x=(x1,x2,x3,…)
#y=(y1,y2,y3,…)
fig,ax=plt.subplots() # 生成一张图和一张子图
lax.plot(x,y,‘k-’) # x横坐标 y纵坐标 ‘k-’线性为黑色
ax.grid()# 添加网格线
ax.axis(‘equal’)
plt.show()
输出结果:
尚存的问题:
一个shapefile文件中存在多个几何对象,以上只能每次读出一个对象的数据并显示成图,如果依次把每个对象的横坐标数据都添加到一个x,所有的纵坐标数据都添加到y,统一显示,会坐标衔接不上。
如下:
for i in range(200,204)结果输出:
for i in range(0,204)结果输出: