Freigeben über


LineString

Ein LineString ist ein eindimensionales Objekt, das eine Sequenz aus Punkten und die sie verbindenden Liniensegmente darstellt.

LineString-Instanzen

Die nachfolgende Abbildung enthält Beispiele für LineString-Instanzen.

Beispiele von LineString-geometry-Instanzen

Folgendes wird dargestellt:

  • Abbildung 1 zeigt eine einfache, nicht geschlossene LineString-Instanz.

  • Abbildung 2 zeigt eine nicht einfache, nicht geschlossene LineString-Instanz.

  • Abbildung 3 zeigt eine einfache, geschlossene LineString-Instanz und daher einen Ring.

  • Abbildung 4 zeigt eine nicht einfache, geschlossene LineString-Instanz und daher keinen Ring.

Akzeptierte Instanzen

Akzeptierte LineString-Instanzen können als Eingaben für Geometrievariablen dienen, sind jedoch möglicherweise keine gültigen LineString-Instanzen. Eine LineString-Instanz muss folgende Kriterien erfüllen, um als akzeptiert zu gelten. Die Instanz muss aus mindestens zwei unterschiedlichen Punkten gebildet werden oder leer sein. Nachfolgend sind akzeptierte LineString-Instanzen aufgeführt:

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 zeigt, dass eine LineString-Instanz zwar akzeptiert, jedoch auch ungültig sein kann.

Die folgende LineString-Instanz wird nicht akzeptiert. Sie löst eine Ausnahme vom Typ System.FormatException aus.

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

Gültige Instanzen

Eine LineString-Instanz muss folgende Kriterien erfüllen, um als gültig zu gelten.

  1. Die LineString-Instanz muss akzeptiert sein.

  2. Ein LineString-Instanz muss aus mindestens zwei unterschiedlichen Punkten gebildet werden oder leer sein.

  3. Die LineString-Instanz darf sich in einem Intervall nicht selbst überlappen.

Die folgenden LineString-Instanzen sind gültig.

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();

Die folgenden LineString-Instanzen sind ungültig.

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();
VorsichtshinweisVorsicht

LineString-Überlappungen werden anhand von nicht exakten Gleitkommaberechnungen erkannt.

Beispiele

Das folgende Beispiel zeigt, wie eine geometryLineString-Instanz aus drei Punkten und mit einem SRID von 0 erstellt wird:

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

Jeder Punkt in der LineString-Instanz kann Z- (Erweiterung) und M-Werte (Measure) enthalten. In diesem Beispiel werden M-Werte zur LineString-Instanz hinzugefügt, die im Beispiel weiter oben erstellt wurde. M und Z können NULL-Werte sein.

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