Numpy 将绘图坐标转换为地理坐标

Numpy 将绘图坐标转换为地理坐标,numpy,matplotlib,coordinates,Numpy,Matplotlib,Coordinates,我能够根据数据点的纬度和经度绘制数据点图,如下所示: 橙色由以下点组成: 使用代码: m = Basemap(projection='merc',llcrnrlat=-0.5,urcrnrlat=0.5,\ llcrnrlon=9,urcrnrlon=10,lat_ts=0.25,resolution='i') m.drawcoastlines() m.drawcountries() # draw parallels and meridians. parallels

我能够根据数据点的纬度和经度绘制数据点图,如下所示:

橙色由以下点组成:

使用代码:

m = Basemap(projection='merc',llcrnrlat=-0.5,urcrnrlat=0.5,\
            llcrnrlon=9,urcrnrlon=10,lat_ts=0.25,resolution='i')
m.drawcoastlines()
m.drawcountries()
# draw parallels and meridians.
parallels = np.arange(-9.,10.,0.5)
# Label the meridians and parallels
m.drawparallels(parallels,labels=[False,True,True,False])
# Draw Meridians and Labels
meridians = np.arange(-1.,1.,0.5)
m.drawmeridians(meridians,labels=[True,False,False,True])
m.drawmapboundary(fill_color='white')
x,y = m(X, Y)  # This is the step that transforms the data into the map's projection
scatter = plt.scatter(x,y)
m.scatter(x,y)
其中X和Y是numpy数组

我想得到我点击的点的X和Y坐标

我可以通过以下方式获得订单:

coords = []
def onclick(event):
    if plt.get_current_fig_manager().toolbar.mode != '':
        return
    global coords
    ix, iy = event.x, event.y
    print('x = %d, y = %d'%(ix, iy))

    global coords
    coords.append((ix, iy))

    return coords

cid = fig.canvas.mpl_connect('button_press_event', onclick)

plt.show()
但这似乎返回了数字坐标。有没有办法将这些坐标转换为各自的横向坐标和纵向坐标


然后,我计划使用这些来查找原始X和Y阵列中我单击的最近点。首先,您需要使用数据坐标

ix, iy = event.xdata, event.ydata
然后,要获得lon/lat坐标,需要应用逆贴图变换

lon, lat = m(event.xdata, event.ydata, inverse=True)

令人惊叹的!代码中有几个bug需要解决,但它完全满足了我的需要!!