2016-03-31 1 views
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() 

screen

アップデート: 私はポリゴンをスケーリングするデモ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) 

enter image description here

私が間違って何をしているのですか?

+0

MS SQL Serverには、_scaling_(呼び出すとズーム)ジオメトリメソッドが組み込まれていません。 'STBuffer'メソッドはジオメトリオブジェクトの周りに特定のサイズのバッファを置きます(あなたはCSSの_padding_にそれを指定することができます)が、あなたが探している解決策であるかどうかは疑問です。 カスタム関数を記述する必要があります。 –

+0

ここにカスタム関数の作成に関するいくつかのポインタがあり、受け入れられた答えには、CLRストアドプロシージャをラップすることができるC#ライブラリが含まれています。http://stackoverflow.com/questions/1109536/an-algorithm-for-inflating-deflating-オフセットバッファリング - ポリゴン –

+0

キャシー、あなたは毎回四角形を探していますか、あなたの例では四角形を使っていますか?実際には四角形ですか? –

答えて

関連する問題