在使用圆锥投影时,在Basemap,Python中沿着恒定纬度绘制一条线

时间:2017-12-05 18:44:17

标签: python matplotlib gis matplotlib-basemap

我想在basemap实例上绘制一条连接两个等纬度点的线,使用圆锥形地图投影(即纬度为直线)。

无论我使用m.drawgreatcircle还是m.plot,结果行都是两点之间的(-I think ......?)行,而不是到恒定纬度的一条线。有人知道如何解决这个问题吗?下面是一些示例代码和结果图像。我非常喜欢沿着55N线运行的黄色虚线。

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

#set up the map
m = Basemap(resolution='l',area_thresh=1000.,projection='lcc',\
        lat_1=50.,lat_2=60,lat_0=57.5,lon_0=-92.5,\
        width=6000000,height=4500000)


#add some basic map features
m.drawmeridians(np.arange(-155,-5,10),\
       labels=[0,0,0,1],fontsize=8,linewidth=0.5)
m.drawparallels(np.arange(30,85,5),\
       labels=[1,0,0,0],fontsize=8,linewidth=0.5)
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=1)
m.drawstates(linewidth=0.3)

#plot some topography data
m.etopo()

#draw a line between two points of the same latitude
m.drawgreatcircle(-120,55,-65,55,linewidth=1.5,\
       color='yellow',linestyle='--')

I want the yellow dashed line to run along the line of latitude!

道歉,如果我遗漏了一些非常简单的东西......!

1 个答案:

答案 0 :(得分:1)

drawgreatcicle显然无法在lcc投影地图上正常工作。

您始终可以自己创建一条线,而不是依赖此辅助函数。为此,沿着线创建坐标,投影它们并调用plot

lon = np.linspace(-120,-65)
lat = np.linspace(55,55)
x,y = m(lon,lat)
m.plot(x,y, linewidth=1.5, color='yellow',linestyle='--')

enter image description here