2017-06-06 872 views
1

我使用python 3.6在美國繪製了一個包含大分水嶺的shapefile。我遇到的問題是這個shapefile有許多組件,例如.dbf文件,.prj文件...和其他人。我不知道是否必須單獨讀取所有文件,然後繪圖,或者是否有一個命令可以讓我一次讀完所有文件,然後繪圖。Python在底圖上繪製shapefile

這是到目前爲止我的代碼:

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

回答

1

basemap tutorial上readthedocs上面清清楚楚地寫着關於readshapefile功能

第一個參數shapefile名稱必須沒有shp擴展名。該庫假定所有SHP,SBF和SHX文件將與這個給定的名稱

存在,因此您的電話應該是

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

我明白,但將只對一個工作。所有文件的命名完全相同,因此不添加.shp或.dbf文件只繪製一個文件。 – CPG

+0

是的,你有一個shapefile'filename.shp'及其輔助文件'filename.sbf'和'filename.shx'。如果你有第二個,那就是'filename2.shp',它的輔助文件是'filename2.sbf'和'filename2.shx',你會重複像'map.readshapefile(「filename2」,'Watersheds2')這樣的讀法。 '。 – ImportanceOfBeingErnest