Share via


LineString

LineString 是代表一連串的點及連接這些點之線段的一維度物件。

LineString 例項

下圖顯示 LineString 例項的範例。

幾何 LineString 執行個體的範例

如本圖所示:

  • 圖 1 是簡單、非封閉的 LineString 例項。

  • 圖 2 是非簡單、非封閉的 LineString 例項。

  • 圖 3 是簡單、封閉的 LineString 例項,因此它是環形。

  • 圖 4 是非簡單、封閉的 LineString 例項,因此它不是環形。

接受的例項

接受的 LineString 例項可以放入幾何變數中,但可能不是有效的 LineString 例項。必須符合以下準則,LineString 例項才會被接受。此例項至少必須由兩個點所組成,或者必須是空的。下列為接受的 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 例項必須符合以下準則,才會有效。

  1. 必須已接受 LineString 例項。

  2. 如果 LineString 例項不是空的,則它至少必須包含兩個相異點。

  3. LineString 例項不能在某個間隔上與自己重疊。

下列 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 重疊的偵測是根據浮點計算,因此不精確。

範例

下列範例示範如何建立具有三個點且 SRID 為 0 的 geometryLineString 例項:

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

LineString 例項中的每個點都可包含 Z (高度) 和 M (測量) 值。此範例會將 M 值加入到上述範例所建立的 LineString 例項。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);