8

我想在立体地图上显示一些值(在本例中为南极(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')

无论我做什么,我只画出大陆,但没有数据。

4

3 回答 3

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')

这对我有用:)

于 2012-06-15T08:03:25.277 回答
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)
于 2012-06-14T20:53:50.997 回答
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 为地图投影坐标。

于 2015-03-17T09:48:25.363 回答