如何查找具有给定x和y坐标的多边形

时间:2019-06-10 14:12:32

标签: plsql

我有这样的数据,这是(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
...     ...     ...

1 个答案:

答案 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中进行了描述。 我们不会为您编码。