이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

LineString 은 일련의 점과 이 점을 연결하는 선분을 나타내는 1차원 개체입니다.A LineString is a one-dimensional object representing a sequence of points and the line segments connecting them.

LineString 인스턴스LineString Instances

다음 그림에서는 LineString 인스턴스의 예를 보여 줍니다.The illustration below shows examples of LineString instances.

geometry LineString 인스턴스의 예Examples of geometry LineString instances

그림에 대한 설명:As shown in the illustration:

  • 그림 1은 단순하고 닫혀 있지 않은 LineString 인스턴스입니다.Figure 1 is a simple, nonclosed LineString instance.

  • 그림 2는 단순하지 않고 닫혀 있지 않은 LineString 인스턴스입니다.Figure 2 is a nonsimple, nonclosed LineString instance.

  • 그림 3은 닫혀 있고 단순한 LineString 인스턴스이므로 링입니다.Figure 3 is a closed, simple LineString instance, and therefore is a ring.

  • 그림 4는 닫혀 있고 단순하지 않은 LineString 인스턴스이므로 링이 아닙니다.Figure 4 is a closed, nonsimple LineString instance, and therefore is not a ring.

허용되는 인스턴스Accepted Instances

허용되는 LineString 인스턴스는 기하 도형 변수에 입력될 수 있지만 유효한 LineString 인스턴스가 아닐 수 있습니다.Accepted LineString instances can be input into a geometry variable, but they may not be valid LineString instances. LineString 인스턴스가 허용되려면 다음 조건을 충족해야 합니다.The following criteria must be met for a LineString instance to be accepted. 인스턴스는 2개 이상의 점으로 구성되어야 하거나 비어 있어야 합니다.The instance must be formed of at least two points or it must be empty. 다음 LineString 인스턴스가 허용됩니다.The following LineString instances are accepted.

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 인스턴스를 허용할 수 있지만 유효하지 않음을 보여 줍니다.@g3 shows that a LineString instance can be accepted, but not valid.

다음 LineString 인스턴스가 허용되지 않습니다.The following LineString instance is not accepted. 이 인스턴스에서 System.FormatException이 발생합니다.It will throw a System.FormatException.

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

유효한 인스턴스Valid Instances

LineString 인스턴스는 다음 조건을 충족해야 유효합니다.For a LineString instance to be valid it must meet the following criteria.

  1. LineString 인스턴스가 허용되어야 합니다.The LineString instance must be accepted.

  2. LineString 인스턴스가 비어 있지 않는 경우 해당 인스턴스에 2개 이상의 고유 점이 포함되어야 합니다.If a LineString instance is not empty then it must contain at least two distinct points.

  3. LineString 인스턴스는 두 개 이상의 연속 점 간격으로 자체적으로 겹쳐질 수 없습니다.The LineString instance cannot overlap itself over an interval of two or more consecutive points.

    다음 LineString 인스턴스는 유효합니다.The following LineString instances are valid.

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 인스턴스는 유효하지 않습니다.The following LineString instances are not valid.

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 의 겹침 여부가 정확하지 않은 부동 소수점 계산을 기준으로 검색됩니다.The detection of LineString overlaps is based on floating-point calculations, which are not exact.


다음 예에서는 세 점이 있고 SRID가 0인 geometry``LineString 인스턴스를 만드는 방법을 보여 줍니다.The following example shows how to create a geometry``LineString instance with three points and an SRID of 0:

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

LineString 인스턴스의 각 점에는 Z(높이) 및 M(측정값) 값을 포함할 수 있습니다.Each point in the LineString instance may contain Z (elevation) and M (measure) values. 이 예에서는 위의 예에서 만들어진 LineString 인스턴스에 M 값을 추가합니다.This example adds M values to the LineString instance created in the example above. M 및 Z는 Null 값이 될 수 있습니다.M and Z can be null values.

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 인스턴스를 만드는 방법을 보여 줍니다.The following example shows how to create a geometry LineString instance with two points that are the same. IsValid 에 대한 호출은 LineString 인스턴스가 유효하지 않음을 나타내며 MakeValid 호출 시 LineString 인스턴스가 Point로 변환됩니다.A call to IsValid indicates that the LineString instance is not valid and a call to MakeValid will convert the LineString instance into a Point.

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

위의 코드 조각은 다음과 같은 결과를 생성합니다.The above code snippet will return the following:

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

참고 항목See Also

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