2017-06-24 24 views
5

Chcę wykreślić nazwy miast na mapie Niemiec za pomocą pakietu Basemap. I określeniu długości i wartości latitide z:Nazwy miejscowości plot dla lon, lat coordinates

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

ponadto,

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) 

oraz z:

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

Chcę wykreślić nazwy miasta, ale isnt pracy ale zwraca wyjątek:

ValueError: object too deep for desired array

Odpowiedz

2

Rozwiązałem to tak:

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) 

ale ja nadal nie rozumiem, dlaczego muszę przekształcić xi Współrzędne Y z mapą (Clon, Clat), ponieważ Clon i Clat muszą reprezentować llcrnrlon Długość geograficzna lewego dolnego rogu i llcrnrlat Wartości szerokości geograficznej lewego dolnego rogu, jeśli podążam za składnią metody Basemap:

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)

ale havent't zrobiłem to z:

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

czy nie mam racji?

Czy ktoś może mi to wyjaśnić?

3

Trzeba wykreślić nazwy miast i znaczniki dla niego w cyklu:

... 
# 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) 
...