首先,我们将从一些基本的起始数据开始:

    接下来,我们可以绘制坐标,从获得它们的实际坐标开始。 记住,南纬和西经坐标需要转换为负值。 例如,纽约市是北纬西经74.0059。 我们可以在我们的程序中定义这些坐标,如:

    1. NYClat, NYClon = 40.7127, -74.0059

    之后我们将这些转换为要绘制的xy坐标。

    注意这里,我们现在已经将坐标顺序翻转为lon, lat(纬度,经度)。 坐标通常以lat, lon顺序给出。 然而,在图形中,lat, long转换为y, x,我们显然不需要。 在某些时候,你必须翻转它们。 不要忘记这部分!

    最后,我们可以绘制如下的坐标:

    1. m.plot(xpt, ypt, 'c*', markersize=15)

    接下来,让我们再画一个位置,洛杉矶,加利福尼亚:

    这次我们画出一个绿色三角,执行代码会生成:

    如果我们想连接这些图块怎么办?原来,我们可以像其它 Matplotlib 图表那样实现它。

    首先,我们将那些xptypt坐标保存到列表,类似这样的东西:

    1. xs = []
    2. ys = []
    3. NYClat, NYClon = 40.7127, -74.0059
    4. xpt, ypt = m(NYClon, NYClat)
    5. xs.append(xpt)
    6. ys.append(ypt)
    7. m.plot(xpt, ypt, 'c*', markersize=15)
    8. LAlat, LAlon = 34.05, -118.25
    9. xpt, ypt = m(LAlon, LAlat)
    10. ys.append(ypt)
    11. m.plot(xpt, ypt, 'g^', markersize=15)
    12. m.plot(xs, ys, color='r', linewidth=3, label='Flight 98')

    二十八、在 Basemap 中绘制坐标 - 图2

    太棒了。有时我们需要以圆弧连接图上的两个坐标。如何实现呢?

    我们的完整代码为:

    1. import matplotlib.pyplot as plt
    2. m = Basemap(projection='mill',
    3. llcrnrlat = 25,
    4. llcrnrlon = -130,
    5. urcrnrlat = 50,
    6. urcrnrlon = -60,
    7. resolution='l')
    8. m.drawcoastlines()
    9. m.drawcountries(linewidth=2)
    10. m.drawstates(color='b')
    11. #m.drawcounties(color='darkred')
    12. #m.fillcontinents()
    13. #m.etopo()
    14. #m.bluemarble()
    15. NYClat, NYClon = 40.7127, -74.0059
    16. xpt, ypt = m(NYClon, NYClat)
    17. xs.append(xpt)
    18. ys.append(ypt)
    19. m.plot(xpt, ypt, 'c*', markersize=15)
    20. LAlat, LAlon = 34.05, -118.25
    21. xpt, ypt = m(LAlon, LAlat)
    22. xs.append(xpt)
    23. ys.append(ypt)
    24. m.plot(xpt, ypt, 'g^', markersize=15)
    25. m.plot(xs, ys, color='r', linewidth=3, label='Flight 98')
    26. m.drawgreatcircle(NYClon, NYClat, LAlon, LAlat, color='c', linewidth=3, label='Arc')
    27. plt.legend(loc=4)
    28. plt.show()

    结果为: