0

==>このスレッドを参照してください !

そこに最良の解決策として示されている出力を参照して、どうすれば境界セルを取得できますか? これは、min(StartX)、min(StartY)、max(EndX)、max(EndY)、または特定のケースでは max(EndX+1) または max(EndY+1) で、列または行が欠落している場合下の画像の 3,10 のうち (緑色の境界線は境界セルです)

[境界ボックス](http://tinypic.com/r/2moyvjo/6)

X Y PieceCells 境界
1 1 (1,1)(2,1)(2,2)(3,2) (1,1)(3,2)
8 1 (10,1)(8,1)(8, 2)(9,1)(9,2)(9,3)(8,1)(10,1)

さて、私はこのようにしたい:
BoundaryStartX, BoundaryStartY, BoundaryEndX, BoundaryEndY
1 1 3 2
8 1 10 3

4

2 に答える 2

0

これは、ジオメトリデータ型を使用して非常に簡単に行うことができました。

declare @g geometry;
set @g = geometry::STGeomFromText(
   'POLYGON( (1 -1, 1 -2, 2 -2, 2 -3, 4 -3, 4 -2, 3 -2, 3 -1, 1 -1) )'
   , 0);

select @g, @g.STEnvelope();

ジオメトリはSQL2008以降で利用可能です。また、座標系を標準のデカルト座標に変換したことにも注意してください(原点の右側に正のx軸、下に負のy軸)。同じことを検討するのもよいでしょう。

于 2012-12-26T03:07:12.570 に答える