Python底图立体图

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

我做了什么,我只能得到各大洲,但没有数据。


所以我觉得我自己找到了答案。 您需要做的是将经纬度坐标从柱面投影转换为属于立体投影的x / y坐标。 在定义底图之后,这很简单:

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

这对我有用:)


您似乎已经想通了,您需要将您的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)

只需添加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为地图投影坐标。

链接地址: http://www.djcxy.com/p/55751.html

上一篇: Python basemap stereographic map

下一篇: Maven + GAE step