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)