【发布时间】:2015-09-19 18:07:04
【问题描述】:
我有这些数据:
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #temp
CREATE TABLE #temp
(
Id INT IDENTITY(1, 1) ,
X FLOAT NOT NULL ,
Y FLOAT NOT NULL
)
INSERT INTO #temp (X, Y) VALUES (0, 0)
INSERT INTO #temp (X, Y) VALUES (0, 1)
INSERT INTO #temp (X, Y) VALUES (0, 2)
INSERT INTO #temp (X, Y) VALUES (0.5, 1)
INSERT INTO #temp (X, Y) VALUES (1, 1)
INSERT INTO #temp (X, Y) VALUES (1, 2)
INSERT INTO #temp (X, Y) VALUES (1.5, 0.5)
INSERT INTO #temp (X, Y) VALUES (2, 0)
INSERT INTO #temp (X, Y) VALUES (2, 1)
我想删除包含在其他点中的点,例如:
(0, 1)
(1, 1)
(1.5, 0.5)
获取定义外部多边形的最外部点,该外部多边形仅由垂直和水平线组成,没有冗余(例如,(0, 1) 是冗余点)。这可以通过 SQL Server 2014 中基于集合的 TSQL 方法来实现吗?
PS:
数据的散点图如下:
我想删除被包围的点。最终,我在外边界之后(绘制为红线)。希望这能让它更清楚。
【问题讨论】:
-
那么想要的结果是什么?
-
对不起,如果我不清楚。删除点:(0, 1), (1, 1), (1.5, 0.5)
-
问题不明确,因为相同的点可以创建另一个多边形。例如,您可以将 (1,2) 与 (1.5,.5) 连接,然后与 (2,1) 连接,这将包含点 (1,1) 而不是 (1.5,.5)。
-
@ughai:他只想要最外层多边形的顶点。
-
ughai 是正确的,据我所知,该问题尚未得到解答。 (1,2)连接到(2,1)的多边形呢?这可以被认为是“最外层的”。我们是说仅由水平线和垂直线组成的凸多边形吗?
标签: sql-server tsql sql-server-2014