Python 在底图上绘制 shapefile

Python Plotting a shapefile on a basemap

我正在使用 python 3.6 绘制包含 U.S 中大分水岭的 shapefile。我 运行 遇到的问题是这个 shapefile 有很多组件,例如 .dbf 文件、.prj 文件......等等。我不确定我是否必须单独读取所有文件然后绘制,或者是否有一个命令可以让我一次读取所有文件然后绘制。

到目前为止,这是我的代码:

from mpl_toolkits.basemap import Basemap

import matplotlib.pyplot as plt

mydbf =('filename.dbf')
myprj =('filename.prj')
myqpj =('filename.qpj')
myshp =('filename.shp')
myshx =('filename.shx')


map= Basemap(projection='cyl',
            lon_0=180,
            lat_0=0,
            resolution='l')
map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='#ddaa66',lake_color='aqua')
map.drawcoastlines()

map.readshapefile(mydbf,myprj,myqpj,myshp,myshx,'Watersheds')
plt.show()

我在 运行 此代码时收到的错误消息是: OSError: cannot locate filename.dbf.shp

在 readthedocs 的 basemap tutorial 中,它清楚地说明了 readshapefile 函数

The first parameter shapefile name must go without the shp extension. The library assumes that all shp, sbf and shx files will exist with this given name

因此你的电话应该是

map.readshapefile("filename",'Watersheds')