0
我有一個簡單的幾何多邊形形狀。我可以使用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 [email protected] END)), @g.STPointN(1).STY + (@g.STPointN(1).STY * (CASE WHEN @g.STPointN(1).STY > 0 THEN @zoom ELSE [email protected] 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 [email protected] END)), @g.STPointN(2).STY + (@g.STPointN(2).STY * (CASE WHEN @g.STPointN(2).STY > 0 THEN @zoom ELSE [email protected] 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 [email protected] END)), @g.STPointN(3).STY + (@g.STPointN(3).STY * (CASE WHEN @g.STPointN(3).STY > 0 THEN @zoom ELSE [email protected] 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 [email protected] END)), @g.STPointN(4).STY + (@g.STPointN(4).STY * (CASE WHEN @g.STPointN(4).STY > 0 THEN @zoom ELSE [email protected] END)), 3857)
我在做什麼錯?
簡而言之,不,MS SQL Server沒有爲_scaling_(縮放,因爲您稱之爲)幾何對象的內置幾何方法。 'STBuffer'方法會在幾何對象周圍放置一定大小的緩衝區(可以將它比作CSS中的_padding_),但我懷疑這是您正在尋找的解決方案。 自定義函數必須寫入。 –
這裏有一些關於創建自定義函數的指針,接受的答案提到了你可能能夠在CLR存儲過程中包裝的C#庫http://stackoverflow.com/questions/1109536/an-algorithm-for-inflating-deflating-抵消 - 緩衝 - 多邊形 –
凱西,你每次都在尋找正方形,還是隻是在你的例子中使用了正方形,但實際上這可能是任何矩形? –