Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
A LineString ist ein eindimensionales Objekt, das eine Abfolge von Punkten und die Liniensegmente darstellt, die sie verbinden.
LineString-Instanzen
Die folgende Abbildung zeigt Beispiele für LineString Instanzen.
Wie in der Abbildung gezeigt:
Abbildung 1 ist eine einfache, nicht geschlossene
LineStringInstanz.Abbildung 2 ist eine nicht einfache, nicht abgeschlossene
LineStringInstanz.Abbildung 3 ist eine geschlossene, einfache
LineStringInstanz und ist daher ein Ring.Abbildung 4 ist eine geschlossene, nicht einfache
LineStringInstanz und ist daher kein Ring.
Akzeptierte Instanzen
Akzeptierte LineString Instanzen können in eine Geometrievariable eingegeben werden, sind aber möglicherweise keine gültigen LineString Instanzen. Die folgenden Kriterien müssen erfüllt sein, damit eine LineString Instanz akzeptiert wird. 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 an, dass eine LineString Instanz akzeptiert werden kann, aber nicht gültig ist.
Die folgende LineString Instanz wird nicht akzeptiert. Es wird ein System.FormatException.
DECLARE @g geometry = 'LINESTRING(1 1)';
Gültige Instanzen
Damit eine LineString Instanz gültig ist, muss sie die folgenden Kriterien erfüllen.
Die
LineStringInstanz muss akzeptiert werden.Wenn eine
LineStringInstanz nicht leer ist, muss sie mindestens zwei unterschiedliche Punkte enthalten.Die
LineStringInstanz kann sich nicht über ein Intervall von zwei oder mehr aufeinander folgenden Punkten ü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 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();
Warnung
Die Erkennung von LineString Überlappungen basiert auf Gleitkommaberechnungen, die nicht genau sind.
Beispiele
Das folgende Beispiel zeigt, wie Sie eine geometry``LineString Instanz mit drei Punkten und einer SRID von 0 erstellen:
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);
Jeder Punkt in der LineString Instanz kann Z-Werte (Höhe) und M-Werte (Maß) enthalten. In diesem Beispiel werden der LineString im obigen Beispiel erstellten Instanz M-Werte hinzugefügt. M und Z können Nullwerte sein.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);
Das folgende Beispiel zeigt, wie Sie eine geometry LineString Instanz mit zwei Punkten erstellen, die identisch sind. Ein Aufruf an IsValid zeigt an, dass die LineString Instanz ungültig ist, und ein Aufruf an MakeValid wird die LineString Instanz in eine Point konvertieren.
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
Der obige Codeausschnitt gibt Folgendes zurück:
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Siehe auch
STLength (Geometrie-Datentyp)STStartPoint (Geometrie-Datentyp)STEndpoint (Geometrie-Datentyp)STPointN (Geometrie-Datentyp)STNumPoints (Geometrie-Datentyp)STIsRing (Geometrie-Datentyp)STIsClosed (Geometrie-Datentyp)STPointOnSurface (Geometrie-Datentyp)Räumliche Daten (SQL Server)