【问题标题】:Cartopy: Convert point from axes coordinates to lat/lon coordinatesCartopy:将点从轴坐标转换为纬度/经度坐标
【发布时间】:2019-06-19 08:09:47
【问题描述】:

我正在使用 Cartopy(TransverseMercator 投影)绘制地图。我在轴坐标(p_a = (0.1, 0.9))中有一个点,我需要它的纬度/经度坐标(即PlateCarree 投影中的坐标)。我怎样才能做到这一点?

【问题讨论】:

    标签: python matplotlib cartopy


    【解决方案1】:

    为此,您需要将点从坐标轴坐标转换为显示坐标,然后转换为数据坐标,最后转换为纬度/经度坐标。因此,您需要从matplotlibcartopy 进行转换。

    p_a = (0.1, 0.9) 点似乎超出了有效的纬度/经度坐标(默认为 ccrs.TransverseMercator())。因此我使用p_a = (0.6, 0.6)

    import cartopy.crs as ccrs
    import matplotlib.pyplot as plt
    
    proj = ccrs.TransverseMercator()
    proj_cart = ccrs.PlateCarree() 
    
    f, ax = plt.subplots(subplot_kw=dict(projection=proj))
    ax.coastlines()
    
    # define point
    p_a = (0.6, 0.6)
    
    # plot point in Axes coordinates
    ax.plot(*p_a, transform=ax.transAxes, marker='o', ms=10)
    
    # convert from Axes coordinates to display coordinates
    p_a_disp = ax.transAxes.transform(p_a)
    
    # convert from display coordinates to data coordinates
    p_a_data = ax.transData.inverted().transform(p_a_disp)
    
    # convert from data to cartesian coordinates
    p_a_cart = proj_cart.transform_point(*p_a_data, src_crs=proj)
    
    # make sure we are correct
    ax.plot(*p_a_cart, transform=proj_cart, marker='x', ms=10)
    
    

    这会产生下图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多