为 lon、lat 坐标绘制城市名称
Plot city names for lon,lat coordinates
我想使用 Basemap 包将城市名称绘制到德国地图上。
我指定了经度和纬度值:
Cname=Form_Cities["name"].values
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values
此外,
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)
并与:
ax.annotate(s=Cname,xy=(Clon,Clat),xycoords="axes pixels")
我想绘制城市名称,但它不起作用,但 returns 例外
ValueError: object too deep for desired array
你必须循环绘制城市名称和标记:
...
# 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)
...
我是这样解决的:
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)
但我仍然不明白为什么我必须用 map(Clon,Clat) 转换 x 和 y 坐标,因为实际上 Clon 和 Clat 必须代表
llcrnrlon 左下角地理经度和
llcrnrlat 左下角的地理纬度值,如果我遵循底图方法的语法:
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)
但我还没有这样做:
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values
还是我错了?
谁能给我解释一下吗?
我想使用 Basemap 包将城市名称绘制到德国地图上。 我指定了经度和纬度值:
Cname=Form_Cities["name"].values
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values
此外,
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)
并与:
ax.annotate(s=Cname,xy=(Clon,Clat),xycoords="axes pixels")
我想绘制城市名称,但它不起作用,但 returns 例外
ValueError: object too deep for desired array
你必须循环绘制城市名称和标记:
...
# 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)
...
我是这样解决的:
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)
但我仍然不明白为什么我必须用 map(Clon,Clat) 转换 x 和 y 坐标,因为实际上 Clon 和 Clat 必须代表 llcrnrlon 左下角地理经度和 llcrnrlat 左下角的地理纬度值,如果我遵循底图方法的语法:
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)
但我还没有这样做:
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values
还是我错了?
谁能给我解释一下吗?