다음을 통해 공유


LineString

LineString은 일련의 점과 이 점을 연결하는 선분으로 나타내는 1차원 개체입니다.

LineString 인스턴스

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

geometry LineString 인스턴스의 예

그림에 대한 설명:

  • 그림 1은 단순하고 닫혀 있지 않은 LineString 인스턴스입니다.

  • 그림 2는 단순하지 않고 닫혀 있지 않은 LineString 인스턴스입니다.

  • 그림 3은 닫혀 있고 단순한 LineString 인스턴스이므로 링입니다.

  • 그림 4는 닫혀 있고 단순하지 않은 LineString 인스턴스이므로 링이 아닙니다.

수락된 인스턴스

수락된 LineString 인스턴스는 geometry 변수로 입력될 수 있지만 유효한 LineString 인스턴스는 아닙니다. LineString 인스턴스가 수락되려면 다음 조건을 충족해야 합니다. 인스턴스는 서로 다른 2개 이상의 점으로 구성되거나 비어 있어야 합니다. 다음 예는 LineString 인스턴스가 수락된 것을 보여 줍니다.

DECLARE @g1 geometry = 'LINESTRING EMPTY';
DECLARE @g2 geometry = 'LINESTRING(1 1,2 3,4 8, -6 3)';
DECLARE @g3 geometry = 'LINESTRING(1 1, 1 1)';

@g3는 LineString 인스턴스가 수락될 수 있지만 유효하지 않음을 보여줍니다.

다음 LineString 인스턴스는 수락되지 않습니다. System.FormatException이 발생하게 됩니다.

DECLARE @g geometry = 'LINESTRING(1 1)';

유효한 인스턴스

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

  1. LineString 인스턴스가 수락되어야 합니다.

  2. LineString 인스턴스가 비어 있지 않은 경우 서로 다른 2개 이상의 점을 포함해야 합니다.

  3. LineString 인스턴스는 간격에서 그 자체와 겹칠 수 없습니다.

다음 LineString 인스턴스는 유효합니다.

DECLARE @g1 geometry= 'LINESTRING EMPTY';
DECLARE @g2 geometry= 'LINESTRING(1 1, 3 3)';
DECLARE @g3 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0)';
DECLARE @g4 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();

다음 LineString 인스턴스는 유효하지 않습니다.

DECLARE @g1 geometry = 'LINESTRING(1 4, 3 4, 2 4, 2 0)';
DECLARE @g2 geometry = 'LINESTRING(1 1, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid();
주의 사항주의

정확하지 않은 부동 소수점 계산을 바탕으로 LineString이 겹치는 것을 감지합니다.

다음 예에서는 세 점이 있고 SRID가 0인 geometryLineString 인스턴스를 만드는 방법을 보여 줍니다.

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);

LineString 인스턴스의 각 점에는 Z(높이) 및 M(측정값) 값을 포함할 수 있습니다. 이 예에서는 위의 예에서 만들어진 LineString 인스턴스에 M 값을 추가합니다. M 및 Z는 Null 값이 될 수 있습니다.

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);