다음을 통해 공유


라인스트링

A LineString 는 점의 시퀀스와 이를 연결하는 선 세그먼트를 나타내는 1차원 개체입니다.

LineString 인스턴스

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

예제 기하학 LineString 인스턴스

그림과 같이 다음을 수행합니다.

  • 그림 1은 닫지 LineString 않은 간단한 인스턴스입니다.

  • 그림 2는 비간단하고 비폐쇄적인 LineString 인스턴스입니다.

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

  • 그림 4는 닫힌 비임플 LineString 인스턴스이므로 링이 아닙니다.

허용되는 인스턴스

허용되는 LineString 인스턴스는 기하 도형 변수에 입력될 수 있지만 유효한 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 비어 있지 않으면 두 개 이상의 고유 지점을 포함해야 합니다.

  3. 인스턴스는 LineString 2개 이상의 연속 지점 간격으로 겹칠 수 없습니다.

다음 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 감지는 정확하지 않은 부동 소수점 계산을 기반으로 합니다.

예시

다음 예제에서는 3포인트와 SRID가 0인 인스턴스를 만드는 geometry``LineString 방법을 보여 줍니다.

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

다음 예제에서는 동일한 두 지점으로 인스턴스를 geometry LineString 만드는 방법을 보여 줍니다. IsValid에 대한 호출은 LineString 인스턴스가 유효하지 않음을 나타내며, MakeValid에 대한 호출은 LineString 인스턴스를 Point로 변환합니다.

DECLARE @g geometry
SET @g = geometry::STGeomFromText('LINESTRING(1 3, 1 3)',0);
IF @g.STIsValid() = 1
  BEGIN
     SELECT @g.ToString() + ' is a valid LineString.';  
  END
ELSE
  BEGIN
     SELECT @g.ToString() + ' is not a valid LineString.';
     SET @g = @g.MakeValid();
     SELECT @g.ToString() + ' is a valid Point.';  
  END

위의 코드 조각은 다음을 반환합니다.

LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.

또한 참조하십시오

STLength (geometry 데이터 형식)STStartPoint (geometry 데이터 형식)STEndpoint (geometry 데이터 형식)STPointN (geometry 데이터 형식)STNumPoints (geometry 데이터 형식)STIsRing (geometry 데이터 형식)STIsClosed (geometry 데이터 형식)STPointOnSurface (geometry 데이터 형식)공간 데이터 (SQL Server)