使用Python中的Shapely库来实现。下面是代码示例:
from shapely.geometry import Polygon, LineString
def resample_polygon(polygon, spacing):
"""
重新采样多边形,使点均匀分布在多边形上
:param polygon: 多边形对象
:param spacing: 点之间的距离
:return: 坐标数组
"""
perimeter = polygon.length
num_points = int(perimeter / spacing) + 1
if num_points < 2:
num_points = 2
line = LineString(polygon.exterior.coords)
return [line.interpolate(float(n) / (num_points - 1), normalized=True).coords[0] for n in range(num_points)]
# 示例
polygon = Polygon([(0,0), (0,10), (10,10), (10,0)])
new_coords = resample_polygon(polygon, 1)
print(new_coords)
上述代码将生成一个长10,宽10的正方形多边形,并在该多边形上将每个点间的间距设置为1。结果将生成一个包含100个坐标(10*10/1)的数组,它们位于多边形的边缘上,坐标点的分布均匀。