Linestring
적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
LineString 은 일련의 점과 이 점을 연결하는 선분을 나타내는 1차원 개체입니다.
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 인스턴스가 유효하려면 다음 조건을 충족해야 합니다.
- LineString 인스턴스를 수락해야 합니다.
- LineString 인스턴스가 비어 있지 않은 경우 두 개 이상의 고유 지점을 포함해야 합니다.
- 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 겹침 검색은 정확한 부동 소수점 계산을 기반으로 합니다.
예
예제 A.
다음 예에서는 세 점이 있고 SRID가 0인 geometry``LineString
인스턴스를 만드는 방법을 보여 줍니다.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
예 2.
인스턴스의 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);
예제 C.
다음 예에서는 동일한 점 두 개로 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)
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기