LineString
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
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.
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 in eine geometry-Variable eingegeben werden. Möglicherweise sind sie jedoch keine gültigen LineString -Instanzen. Damit eine LineString -Instanz akzeptiert wird, müssen die folgenden Kriterien erfüllt sein. Die Instanz muss aus mindestens zwei Punkten gebildet werden, oder sie muss leer sein. Die folgenden LineString-Instanzen werden akzeptiert.
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 werden kann, möglicherweise jedoch nicht gültig ist.
Die folgende LineString -Instanz wird nicht akzeptiert. Sie löst eine System.FormatException
aus.
DECLARE @g geometry = 'LINESTRING(1 1)';
Gültige Instanzen
Damit eine LineString-Instanz gültig ist, muss sie die folgenden Kriterien erfüllen.
- Die LineString -Instanz muss akzeptiert sein.
- Wenn eine LineString-Instanz nicht leer ist, muss sie mindestens zwei unterschiedliche Punkte enthalten.
- Die LineString -Instanz kann sich über ein Intervall von zwei oder mehr aufeinanderfolgenden Punkten nicht selbst überschneiden.
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 nicht gü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();
Warnung
Die Erkennung von LineString -Überschneidungen basiert auf Gleitkommaberechnungen, die nicht genau sind.
Beispiele
Beispiel A.
Das folgende Beispiel zeigt, wie eine geometry``LineString
-Instanz aus drei Punkten und mit der SRID 0 (null) erstellt wird:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Beispiel B.
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);
Beispiel C.
Im folgenden Beispiel wird veranschaulicht, wie eine geometry LineString
-Instanz mit zwei Punkten erstellt wird, die identisch sind. Ein Aufruf von IsValid
gibt an, dass die LineString -Instanz nicht gültig ist, und durch einen Aufruf von MakeValid
wird die LineString -Instanz in einen Pointkonvertiert.
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
Hier sehen Sie das Ergebnis.
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Weitere Informationen
STLength (geometry-Datentyp)
STStartPoint (geometry-Datentyp)
STEndpoint (geometry-Datentyp)
STPointN (geometry-Datentyp)
STNumPoints (geometry-Datentyp)
STIsRing (geometry-Datentyp)
STIsClosed (geometry-Datentyp)
STPointOnSurface (geometry-Datentyp)
Räumliche Daten (SQL Server)