从 Geometry.STEnvelope() 展开点

Expand the points from Geometry.STEnvelope()

我有一个简单的几何多边形形状。我可以使用 STEnvelope() 获取边界框。我想按比例扩大点,基本上缩小类似于截图。

mssql 服务器有能力做到这一点吗?

         DECLARE    @g GEOMETRY;
         SET @g = GEOMETRY::STPolyFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);
         SELECT @g.STEnvelope()

更新: 我创建了一个演示 sql 命令来缩放多边形。而不是将新多边形居中放置在右上角。

         DECLARE @zoom DECIMAL(22,22);
         SET @zoom = 0.00001;

         DECLARE    @g GEOMETRY;
         SET @g = geometry::STGeomFromText('POLYGON ((-12934935.9561 5405312.0569999963, -12934925.8363 5405305.5031, -12934930.8382 5405297.7252999991, -12934940.957899999 5405304.2792000026, -12934935.9561 5405312.0569999963))', 3857)

         SELECT @g.STPointN(1)
         UNION ALL
         SELECT @g.STPointN(2)
         UNION ALL
         SELECT @g.STPointN(3)
         UNION ALL
         SELECT @g.STPointN(4)
         UNION ALL
         SELECT Geometry::Point(@g.STPointN(1).STX + (@g.STPointN(1).STX * ( CASE WHEN @g.STPointN(1).STX > 0 THEN @zoom ELSE -@zoom END )), @g.STPointN(1).STY + (@g.STPointN(1).STY * ( CASE WHEN @g.STPointN(1).STY > 0 THEN @zoom ELSE -@zoom END )), 3857)
         UNION ALL
         SELECT Geometry::Point(@g.STPointN(2).STX + (@g.STPointN(2).STX * ( CASE WHEN @g.STPointN(2).STX > 0 THEN @zoom ELSE -@zoom END )), @g.STPointN(2).STY + (@g.STPointN(2).STY * ( CASE WHEN @g.STPointN(2).STY > 0 THEN @zoom ELSE -@zoom END )), 3857)
         UNION ALL
         SELECT Geometry::Point(@g.STPointN(3).STX + (@g.STPointN(3).STX * ( CASE WHEN @g.STPointN(3).STX > 0 THEN @zoom ELSE -@zoom END )), @g.STPointN(3).STY + (@g.STPointN(3).STY * ( CASE WHEN @g.STPointN(3).STY > 0 THEN @zoom ELSE -@zoom END )), 3857)
         UNION ALL
         SELECT Geometry::Point(@g.STPointN(4).STX + (@g.STPointN(4).STX * ( CASE WHEN @g.STPointN(4).STX > 0 THEN @zoom ELSE -@zoom END )), @g.STPointN(4).STY + (@g.STPointN(4).STY * ( CASE WHEN @g.STPointN(4).STY > 0 THEN @zoom ELSE -@zoom END )), 3857)

我做错了什么?

我最终放弃了 ms sql 版本并使用 C# 版本的 Clipper http://www.angusj.com/delphi/clipper.php