我想在立体地图上显示一些值(在这种情况下是南极( spstere ))。如果我在圆柱形地图上显示它们( cyl ),一切都很好:
m = Basemap(projection='cyl',llcrnrlon=-180,llcrnrlat=-90,urcrnrlon=180,urcrnrlat=90,resolution='i')
CS = m.scatter(lon2,lat2,c=BT2,edgecolors='none',s=sz,cmap='gray')
现在我想要在南极立体地图上使用相同的值,但我无法让它工作:
m = Basemap(projection='spstere',boundinglat=-10,lon_0=180,resolution='c')
CS = m.scatter(lon2,lat2,c=BT2,edgecolors='none',s=sz,cmap='gray')
我做什么我只能画大陆,但没有数据。
答案 0 :(得分:3)
所以我想我自己找到了答案。您需要做的是将圆柱投影的纬度/经度坐标转换为属于立体投影的x / y坐标。在定义Basemap之后,这非常简单:
m = Basemap(projection='spstere',boundinglat=-10,lon_0=180,resolution='c')
只需按照以下方式进行转换:
x,y = m(lon2,lat2)
最后用x / y坐标绘制地图,例如:
CS = m.scatter(x,y,c=BT2,edgecolors='none',s=sz,cmap='gray')
这对我有用:)
答案 1 :(得分:1)
正如您似乎已经想到的那样,您需要将x和y坐标转换为“地图”坐标(相应的文档可以在http://matplotlib.github.com/basemap/users/mapcoords.html找到):
spstereo = Basemap(projection='spstere',boundinglat=-10,lon_0=180,resolution='c')
x, y = spstereo(lons, lats)
spstereo.scatter(x, y)
答案 2 :(得分:0)
只需添加latlon关键字
即可m = Basemap(projection='spstere',boundinglat=-10,lon_0=180,resolution='c')
CS = m.scatter(lon2,lat2,c=BT2,s=sz,cmap='gray', latlon=True)
如果latlon关键字设置为True,则x,y以度为单位表示为经度和纬度。数据和经度自动移位以匹配圆柱形和假圆柱形投影的地图投影区域,并且x,y被转换为地图投影坐标。如果latlon为False(默认),则假定x和y为地图投影坐标。