我正在使用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]
答案 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] )