MultiLineStringは、0 個以上のgeometryまたは geographyLineString インスタンスのコレクションです。
MultiLineString インスタンス
次の図は、 MultiLineString インスタンスの例を示しています。
図に示すように、
図 1 は、境界が 2 つの
LineString要素の 4 つのエンドポイントである単純なMultiLineStringインスタンスです。図 2 は、
LineString要素のエンドポイントのみが交差するため、単純なMultiLineStringインスタンスです。 境界は、重複しない 2 つのエンドポイントです。図 3 は、その
LineString要素の内部が交差しているため、非シンプルなMultiLineStringインスタンスです。 この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 インスタンスを有効にするには、次の条件を満たす必要があります。
MultiLineStringインスタンスを構成するすべてのインスタンスは、有効なLineStringインスタンスである必要があります。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 インスタンスと重なっているためです。 彼らは無限のポイント数で触れる。
例示
次の例では、SRID 0 を持つ 2 つのLineString要素を含む単純な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 (ジオメトリ データ型)
LineString
空間データ (SQL Server)