Python basemap 极射投影地图

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

无论我做什么,都只能绘制大陆,但没有数据。


您应该将您的解决方案发布在下面的答案中。 - deadly
3个回答

3

我认为我已经自己找到了答案。您需要做的是将圆柱投影的lat / lon坐标转换为属于立体投影的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

正如您已经发现的那样,您需要将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)

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是地图投影坐标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接