我在我的几何形状上使用了包络函数来得到这个:
多边形((-179.231086 51.175092、179.859681 51.175092、179.859681 71.441059、-179.231086 71.441059、-179.231086 51.175092))
是否有内置函数可以让我从该矩形中获取东北角和西南角?
我在我的几何形状上使用了包络函数来得到这个:
多边形((-179.231086 51.175092、179.859681 51.175092、179.859681 71.441059、-179.231086 71.441059、-179.231086 51.175092))
是否有内置函数可以让我从该矩形中获取东北角和西南角?
由于您使用的是信封,因此它将是一个与轴对齐的框。在我看来,它好像开始枚举 SE 的拐角并逆时针方向移动。所以,我们只需要抓住第 1 和第 3 点。
declare @g geometry = geometry::STGeomFromText('POLYGON ((-179.231086 51.175092, 179.859681 51.175092, 179.859681 71.441059, -179.231086 71.441059, -179.231086 51.175092))', 0);
select @g.STPointN(1) as [SW], @g.STPointN(3) as [NE]
如果不存在,我在下面提供了一个代码示例,可能会为您指明正确的方向(与我上面的评论有关),我也使用整数而不是浮点数,但这应该很容易修复:
Declare @temp table(PointNum int, FirstCoord int, SecondCoord int)
Insert Into @temp(PointNum, FirstCoord, SecondCoord)
Values(1, -179, 51)
Insert Into @temp(PointNum, FirstCoord, SecondCoord)
Values(2, 179, 51)
Insert Into @temp(PointNum, FirstCoord, SecondCoord)
Values(3, 179, 71)
Insert Into @temp(PointNum, FirstCoord, SecondCoord)
Values(4, -179, 71)
Select * From @temp
Select Top 1 PointNum as NE From @temp
Order By FirstCoord desc, SecondCoord desc
Select Top 1 PointNum as SW From @temp
Order By FirstCoord , SecondCoord
Select Top 1 PointNum as NW From @temp
Order By FirstCoord, SecondCoord desc
Select Top 1 PointNum as SE From @temp
Order By FirstCoord desc, SecondCoord