2017-06-24 21 views
5

Tôi muốn vẽ tên các thành phố trên bản đồ của Đức bằng gói Basemap. tôi đã xác định kinh độ và giá trị latitide với:Tên thành phố lô đất cho vĩ độ, tọa độ vĩ độ

Cname=Form_Cities["name"].values  
Clat=Form_Cities["lat"].values 
Clon=Form_Cities["lon"].values 

hơn nữa,

map=Basemap(projection="lcc",resolution="l",width=1E6,height=1E6,lon_0=9.9167,lat_0=51.5167,fix_aspect=False)#Resturn just the empty "figure with no conotents on it 
map.shadedrelief() 
map.drawcountries(color="black",zorder=1,linewidth=1) 

và với:

ax.annotate(s=Cname,xy=(Clon,Clat),xycoords="axes pixels") 

Tôi muốn âm mưu tên thành phố nhưng nó isnt làm việc nhưng lợi nhuận ngoại lệ

ValueError: object too deep for desired array

Trả lời

2

tôi đã giải quyết nó như thế này:

x,y=map(Clon,Clat) 
[ax.annotate(s=nme,xy=(xp,yp),color="gray",alpha=0.5,fontsize=6) for nme,xp,yp in zip(Cname,x,y) 

nhưng tôi vẫn không nhận được lý do tại sao tôi phải chuyển đổi x và y tọa độ với bản đồ (Clon, Clat) vì thực sự Clon và Clat phải đại diện cho llcrnrlon Kinh độ địa lý góc dưới bên trái và llcrnrlat Giá trị vĩ độ địa lý góc dưới bên trái nếu tôi tuân theo cú pháp của phương pháp Sơ đồ cơ sở:

mpl_toolkits.basemap.Basemap(llcrnrlon=None, llcrnrlat=None, urcrnrlon=None, urcrnrlat=None, llcrnrx=None, llcrnry=None, urcrnrx=None, urcrnry=None, width=None, height=None, projection=’cyl’, resolution=’c’, area_thresh=None, rsphere=6370997.0, ellps=None, lat_ts=None, lat_1=None, lat_2=None, lat_0=None, lon_0=None, lon_1=None, lon_2=None, o_lon_p=None, o_lat_p=None, k_0=None, no_rot=False, suppress_ticks=True, satellite_height=35786000, boundinglat=None, fix_aspect=True, anchor=’C’, celestial=False, round=False, epsg=None, ax=None)

nhưng havent't Tôi làm điều này với:

Clat=Form_Cities["lat"].values 
Clon=Form_Cities["lon"].values 

hay tôi sai?

Bạn có thể giải thích điều này cho tôi không?

3

Bạn phải vẽ tên thành phố và đánh dấu cho nó trong một chu kỳ:

... 
# convert your coords to map projection coords 
yp,xp = map(yp,xp) 
map.plot(xp, yp, 'ro', markersize=4) # plot markers 
for label, xpt, ypt in zip(point_lables, xp, yp): # add annotation (city names) 
    plt.text(xpt+0.5, ypt+0.01, label, color='firebrick', fontsize=7) 
... 
Các vấn đề liên quan