出于某种目的,我想绘制一个基于多个经度和纬度的多边形作为组合在一起的端点。重新排列包含端点的数组以创建Python中的封闭多边形
示例性数据示出了这样的:
fig=plt.figure()
ax = plt.gca()
x_map1, x_map2 = 114.166,114.996
y_map1, y_map2 = 37.798,38.378
map = Basemap(llcrnrlon=x_map1,llcrnrlat=y_map1,urcrnrlon=x_map2,urcrnrlat=y_map2)
map.drawparallels(np.arange(y_map1+0.102,y_map2,0.2),labels=[1,0,0,1],size=14,linewidth=0,color= '#FFFFFF')
map.drawmeridians(np.arange(x_map1+0.134,x_map2,0.2),labels=[1,0,0,1],size=14,linewidth=0)
bo_x = [114.4390022, 114.3754847, 114.3054522, 114.3038236, 114.2802081, 114.2867228, 114.3378847, 114.3888619, \
114.6288783, 114.6848733, 114.7206292, 114.7341219]
bo_y = [38.16671389, 38.14472722, 38.14309861, 38.10156778, 38.08853833, 38.06980889, 38.03587472, 37.96409056, \
37.84975278, 37.84840333, 37.9017, 38.16683306]
x, y = map(bo_x, bo_y)
xy = zip(x,y)
poly = Polygon(xy, facecolor='red', alpha=0.4)
plt.gca().add_patch(poly)
该图示出了这样的:
但当Lons
阵列和Lats
阵列不在逆时针顺序,并且阵列包含许多难以手动调整的项目。多边形输出可能显示不一致。
在这里,我瓦解bo_x和bo_y作为一个虚拟的局面。
bo_x_adjust = [114.4390022, 114.3754847, 114.3054522, 114.3038236, 114.6288783, 114.6848733, 114.7206292, 114.7341219,
114.2802081, 114.2867228, 114.3378847, 114.3888619, ]
bo_y_adjust = [38.16671389, 38.14472722, 38.14309861, 38.10156778, 37.84975278, 37.84840333, 37.9017, 38.16683306,
38.08853833, 38.06980889, 38.03587472, 37.96409056, ]
图显示,如:
所以,这里是我的问题。有时,原始端点不能按顺序输出闭合的多边形。预先组织阵列是最好的选择。
我认为调整阵列的顺序一样bo_x和bo_y必须遵循两个原则:在这两个阵列
元素都应该是同步调整为目的,以不破端点对(X〜Y)
新阵列应在2-D空间上以顺时针或逆时针顺序绘制。
任何意见或指导原则将不胜感激。
哦,会有很多可能性!我没有想过这个! –
如果输出可以显示任何可能性,那就太好了! –