点多边形,简单的4顶点多边形,没有外部库

时间:2018-05-26 07:15:23

标签: python matplotlib

我正在使用matplot lib在地图上绘制事物并且有一个坐标图集,我有一个4个顶点的点集,用于定义地图上的边界,我想要清除我的地图册中没有的所有条目属于那个界限。

我一直在尝试使用.contains_points的matplotlib路径但是看起来不起作用,输出绘制的地图已经删除了一些点,但并非所有都在边界之外。

我的地图集数据包含特定地理区域的动植物群落,

border= [(-35.2825, 149.108), (-35.2873, 149.118), (-35.2714, 149.118), (-35.2758, 149.127)]
border_path= Path(border, codes=None, closed=True)

# Atlas data is defined in another part. contains [name, lat, lon]
for n, i in enumerate(atlas_data):
    lat_lon = (i[1], i[2])

    if not border_path.contains_points([lat_lon], transform=None):
        del atlas_data[n]

1 个答案:

答案 0 :(得分:1)

未经测试,但是如果您使用inboundspoints绘制点而不是atlas_data,那么这应该有效 - 请注意contains_points if语句不再有not

border= [(-35.2825, 149.108), (-35.2873, 149.118), (-35.2714, 149.118), (-35.2758, 149.127)]
border_path= Path(border, codes=None, closed=True)
inboundspoints = []
# Atlas data is defined in another part. contains [name, lat, lon]
for n, i in enumerate(atlas_data):
    lat_lon = (i[1], i[2])

    if border_path.contains_points([lat_lon], transform=None):
        inboundspoints.append( atlas_data[n] )