在底图上绘制多边形

2024-09-30 01:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有很多类似的问题(How to draw rectangles on a Basemap,和http://matplotlib.1069221.n5.nabble.com/display-a-filled-lat-lon-basemap-rectangle-td11562.html),但我仍然不知道如何做到这一点。在

我想对由两个方框覆盖的区域进行着色,每个角点的坐标(UR=右上角,LL=左下角….)由以下公式给出:

box 1:
UR_box1_lat = 72.9 
UR_box1_lon = -160
LL_box1_lat = 71.2
LL_box1_lon = -176.5

box 2 :
UL_box2_lat = LL_box1_lat
UL_box2_lon = LL_box1_lon
LR_box2_lat = 69.304
LR_box2_lon = -164.5

这将生成域的基础贴图,其中我要在其上对多边形进行着色处理:

^{pr2}$

我已经试过了(但这只是在顶部框中尝试,但我希望两个框的整个区域都有阴影):

def draw_screen_poly( lats, lons, m):
    x, y = m( lons, lats )
    xy = zip(x,y)
    poly = Polygon( xy, facecolor='red', alpha=0.4 )
    plt.gca().add_patch(poly)

lats_box1 = np.linspace(71.2, 72.9, num=25)
lons_box1 = np.linspace(-176.5, -160, num=25)
#lats_box1 = [71.2,72.9,72.9,71.2]
#lons_box1 = [-160,-160,-176.5,-176.5]

#m = Basemap(projection='sinu',lon_0=0)
#m.drawcoastlines()
#m.drawmapboundary()
draw_screen_poly( lats_box1, lons_box1, m )

而且(这也是一种尝试,只在顶部的盒子):

x1,y1 = m(71.2,-176.5)
x2,y2 = m(72.9,-176.5)
x3,y3 = m(72.9,-160)
x4,y4 = m(71.2,-160)

p = Polygon([(x1,y1),(x2,y2),(x3,y3),(x4,y4)],facecolor='red',edgecolor='blue',linewidth=2)
plt.gca().add_patch(p)
plt.show()

非常感谢您的帮助,我已经坚持了很久了


Tags: box区域pltlonbasemapll着色lat

热门问题