次の方法で共有


MultiLineString

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance

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

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 番目の System.FormatException LineString インスタンスが有効ではないため、 がスローされます。

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 つの geometry``MultiLineString 要素を含む SRID 0 の単純な LineString インスタンスを作成しています。

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)