2013-10-18 97 views
3

我有下面的代碼添加一個多邊形到一個情節:使用matplotlib-底圖

from mpl_toolkits.basemap import Basemap 
map = Basemap(projection='merc', lat_0=50, lon_0=4, 
    resolution = 'l', area_thresh = 0.1, 
    llcrnrlon=4, llcrnrlat=50, 
    urcrnrlon=40, urcrnrlat=60) 

map.drawcoastlines(linewidth=0.15) 
map.drawcountries(linewidth=0.15) 
map.fillcontinents(color='brown',lake_color='white') 
map.drawmapboundary(fill_color='white') 

enter image description here

並在此地圖我想顯示僅由一個多邊形shape文件的頂部。多邊形定義了一個封閉區域。我已經找到了關於如何手動添加多邊形或從shapefile中繪製多個多邊形的不同教程,但我無法爲我的情況做到這一點。 shapefile屬性表僅由兩個字段組成:'c'和'區域'。

現在我已經到了這個

import shapefile 

s = shapefile.Reader(filepath,'c',drawbounds=False) 
shapes = s.shapes() 
records = s.records() 
for record, shape in zip(records,shapes): 
    lons,lats = zip(*shape.points) 
    data = np.array(map(lons, lats)).T 
x, y =map(lons,lats) 
+0

看到這個答案HTTP ://stackoverflow.com/a/19444121/380231如何構建一個多邊形。 – tacaswell

回答

1

有同樣的問題,但它是如此簡單,你從來​​沒有想過與許多教程和模塊和一種類似的問題在網上做:

map.readshapefile('luthuania', 'any_name_you_like', drawbounds=True) 

所以你的例子:

from mpl_toolkits.basemap import Basemap 
map = Basemap(projection='merc', lat_0=50, lon_0=4, 
    resolution = 'l', area_thresh = 0.1, 
    llcrnrlon=4, llcrnrlat=50, 
    urcrnrlon=40, urcrnrlat=60) 

map.readshapefile('luthuania', 'any_name_you_like', drawbounds=True, linewidth=2, color='b') 

map.drawcoastlines(linewidth=0.15) 
map.drawcountries(linewidth=0.15) 
map.fillcontinents(color='brown',lake_color='white') 
map.drawmapboundary(fill_color='white') 

其中給出

lithuania

模塊shape文件,順便在引擎蓋下使用底圖:看C:\ Python33 \ LIB \站點包\ mpl_toolkits \底圖\ shapefile.py