我有这样的数据,这是(x,y)对的坐标系,所以问题是如何获取(x,y)点,如果我们将这些点连接起来,其他点必须在多边形内,并且必须是凸多边形
x_axis y_axis id
8 14.5 1
1.1 1.1 2
3.5 3.4 3
4.5 0.4 4
13.5 7.8 5
11.5 15.2 6
2.8 8.3 7
0.3 5.4 8
1.5 3.8 9
8 8 10
8.3 8.1 11
2 10 12
5 14 13
... ... ...
答案 0 :(得分:0)
朴素的解决方案是采用包含所有点的矩形:
select min(ap.x_axis) as x,
min(ap.y_axis) as y,
'lower_left' as desc
from all_points ap
union all
select min(ap.x_axis) as x,
max(ap.y_axis) as y,
'upper_left' as desc
from all_points ap
union all
select max(ap.x_axis) as x,
max(ap.y_axis) as y,
'upper_right' as desc
from all_points ap
union all
select max(ap.x_axis) as x,
min(ap.y_axis) as y,
'lower_right' as desc
from all_points ap
这是解决您发布的问题的解决方案。
如果要“最小”多边形,则称为“凸包”。找到它的算法称为“格雷厄姆扫描”,并在wikipedia中进行了描述。 我们不会为您编码。