次の方法で共有


マルチラインストリング

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

MultiLineString インスタンス

次の図は、 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 インスタンスを有効にするには、次の条件を満たす必要があります。

  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 インスタンスと重なっているためです。 彼らは無限のポイント数で触れる。

例示

次の例では、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)