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 instances インスタンスは許容されます。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 インスタンスは、それ自体を 2 つ以上の連続する点の区間に重ねることはできない。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.


次の例は、3 つの点を持つ geometry``LineString インスタンスを作成する方法を示しています。このインスタンスの SRID は 0 です。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);  

次の例は、同じ 2 つの点を持つ 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)