LineString
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance SQL analytics endpoint in Microsoft Fabric Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス
LineString は、ポイントのシーケンスと、SQL データベース エンジン空間データ内でそれらを接続する線分を表す 1 次元オブジェクトです。
LineString インスタンス
次の図は、 LineString インスタンスの例を示しています。
この図は次のことを示しています。
図 1 は、単純な閉じていない LineString インスタンスです。
図 2 は、単純でない、閉じていない LineString インスタンスです。
図 3 は、閉じている単純な LineString インスタンスです。したがって、このインスタンスはリングです。
図 4 は、閉じている単純でない LineString インスタンスです。したがって、このインスタンスはリングではありません。
許容されるインスタンス
受け入れ可能な LineString インスタンスは geometry 変数に入力できますが、有効な LineString インスタンスではない可能性があります。 LineString インスタンスが許容されるには、次の条件を満たす必要があります。 インスタンスは、2 つ以上の異なる点から構成されているか、または空である必要があります。 次に示す LineString instances インスタンスは許容されます。
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 インスタンスが空でない場合は、2 つ以上の異なる点が含まれていること。
- 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.
次の例は、3 つの点を持つ geometry LineString
インスタンスを作成する方法を示しています。このインスタンスの SRID は 0 です。
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
例 B。
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。
次の例は、同じ 2 つの点を持つ 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.