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.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Ein LineString ist ein eindimensionales Objekt, das eine Abfolge von Punkten darstellt, und die Liniensegmente, die sie in SQL-Datenbank Modul-Räumlichen Daten verbinden.
LineString-Instanzen
Die folgende Abbildung zeigt 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 Geometrievariable eingegeben werden, sind aber möglicherweise 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. Es löst 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 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();
Warning
Die Erkennung von LineString -Überschneidungen basiert auf Gleitkommaberechnungen, die nicht genau sind.
Examples
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 -Werte (Erhöhung) und M (Measure) enthalten. In diesem Beispiel werden der LineString im vorherigen Beispiel erstellten Instanz M-Werte hinzugefügt. M und Z können Werte sein NULL .
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, der IsValid angibt, dass die LineString-Instanz ungültig ist. Ein Aufruf zum MakeValid Konvertieren der LineString-Instanz in einen Punkt.
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.