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 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.
参照
STLength (geometry データ型)
STStartPoint (geometry データ型)
STEndpoint (geometry データ型)
STPointN (geometry データ型)
STNumPoints (geometry データ型)
STIsRing (geometry データ型)
STIsClosed (geometry データ型)
STPointOnSurface (geometry データ型)
空間データ (SQL Server)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示