【问题标题】:Python basemap stereographic mapPython底图立体图
【发布时间】:2011-12-14 22:42:00
【问题描述】:

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

我所做的只是绘制大陆,但没有数据。

【问题讨论】:

  • 您应该在下面发布您的解决方案作为答案。

标签: python matplotlib matplotlib-basemap


【解决方案1】:

所以我想我自己已经找到了答案。您需要做的是将柱面投影的纬度/经度坐标转换为属于立体投影的 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')

这对我有用:)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      只需添加 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)
      

      来自documentation

      如果 latlon 关键字设置为 True,x,y 将被解释为以度为单位的经度和纬度。数据和经度会自动移动以匹配圆柱和伪圆柱投影的地图投影区域,并且 x,y 会转换为地图投影坐标。如果 latlon 为 False(默认),则假定 x 和 y 为地图投影坐标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 2015-02-27
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 2020-09-30
        • 2014-09-26
        相关资源
        最近更新 更多