次の方法で共有


MultiLineString

MultiLineString は、0 個以上の geometry LineString インスタンスまたは geography LineString インスタンスのコレクションです。

MultiLineString インスタンス

次の図は、MultiLineString インスタンスの例です。

geometry MultiLineString インスタンスの例

この図は次のことを示しています。

  • 図 1 は、2 つの LineString 要素の 4 つの終点から成る境界を持つ単純な MultiLineString インスタンスです。

  • 図 2 の MultiLineString インスタンスは、LineString 要素の終点のみで交差しているため単純です。 このインスタンスの境界は、重なっていない 2 つの終点です。

  • 図 3 の MultiLineString インスタンスは、一方の LineString 要素の内部で交差しているため単純ではありません。 この MultiLineString インスタンスの境界は 4 つの終点です。

  • 図 4 は、単純でなく、閉じていない MultiLineString インスタンスです。

  • 図 5 は、単純な閉じていない MultiLineString です。 このインスタンスが閉じていないのは、その LineStrings 要素が閉じていないからです。 このインスタンスが単純なのは、内部で交差している LineStrings インスタンスがないからです。

  • 図 6 は、単純な閉じている MultiLineString インスタンスです。 このインスタンスが閉じているのは、そのすべての要素が閉じているからです。 このインスタンスが単純なのは、内部で交差している要素がないからです。

許容されるインスタンス

MultiLineString インスタンスが許容されるためには、空であるか、許容される LineString インスタンスのみで構成されている必要があります。 許容される LineString インスタンスの詳細については、「LineString」を参照してください。 次の例に、許容される MultiLineString インスタンスを示します。

DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';

次の例では、2 番目の LineString インスタンスが有効ではないため、System.FormatException がスローされます。

DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';

有効なインスタンス

MultiLineString インスタンスを有効にするためには、次の条件を満たす必要があります。

  1. MultiLineString インスタンスを構成するすべてのインスタンスが、有効な LineString インスタンスである。

  2. MultiLineString インスタンスを構成する 2 つの LineString インスタンスが内部で互いに重ならない。 LineString インスタンスは、有限数の接点のみで、互いにまたは他の LineString インスタンスと交差するか接することができます。

次の例に、3 つの有効な MultiLineString インスタンスと 1 つの無効な MultiLineString インスタンスを示します。

DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();

@g4 は、2 番目の LineString インスタンスが最初の LineString インスタンスと内部で重なっているため、有効ではありません。 有限数の接点で接しています。

使用例

次の例では、2 つの LineString 要素を含む SRID 0 の単純な geometry MultiLineString インスタンスを作成しています。

DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');

このインスタンスを別の SRID で作成するには、STGeomFromText() または STMLineStringFromText() を使用します。 次の例のように、Parse() を使用して、その後に SRID を変更することもできます。

DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
SET @g.STSrid = 13;

関連項目

参照

STLength (geometry データ型)

STIsClosed (geometry データ型)

概念

LineString

空間データ (SQL Server)