다음을 통해 공유


MultiLineString

MultiLineString은 0개 이상의 geometry 또는 geographyLineString 인스턴스의 컬렉션입니다.

MultiLinestring 인스턴스

다음 그림에서는 MultiLineString 인스턴스의 예를 보여 줍니다.

geometry MultiLineString 인스턴스의 예

그림에 대한 설명:

  • 그림 1은 두 LineString 요소의 네 끝점이 경계인 단순한 MultiLineString 인스턴스입니다.

  • 그림 2는 LineString 요소의 끝점만 교차하므로 단순한 MultiLineString 인스턴스입니다. 경계는 두 개의 겹치지 않는 끝점입니다.

  • 그림 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))';

다음 예에서는 두 번째 LineString 인스턴스가 유효하지 않으므로 System.FormatException이 발생합니다.

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

유효한 인스턴스

MultiLineString 인스턴스가 유효하려면 다음 조건을 만족해야 합니다.

  1. MultiLineString 인스턴스를 구성하는 모든 인스턴스가 유효한 LineString 인스턴스여야 합니다.

  2. MultiLineString 인스턴스를 구성하는 두 LineString 인스턴스는 일정한 간격으로 서로 겹칠 수 있습니다. LineString 인스턴스는 한정된 수의 점에서 자체적으로 또는 다른 LineString 인스턴스에만 교차하거나 접할 수 있습니다.

다음 예에서는 유효한 MultiLineString 인스턴스 세 개와 유효하지 않은 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는 두 번째 LineString 인스턴스가 일정 간격으로 첫 번째 LineString 인스턴스와 겹치므로 유효하지 않습니다. 즉, 이 두 인스턴스는 무한한 점에서 접합니다.

다음 예에서는 SRID 0으로 두 개의 LineString 요소를 포함하는 단순한 geometryMultiLineString 인스턴스를 만듭니다.

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;