다음을 통해 공유


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();

두 번째 LineString 인스턴스가 첫 번째 LineString 인스턴스와 간격을 두고 겹치므로 @g4는 유효하지 않습니다. 그러한 인스턴스는 한정된 수의 점에서 만납니다.

다음 예에서는 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;