MakeValid (geometry-Datentyp)
Konvertiert eine ungültige geometry-Instanz in eine geometry-Instanz mit einem gültigen OGC (Open Geospatial Consortium)-Typ.
Syntax
.MakeValid ()
Rückgabetypen
SQL Server Rückgabetyp: geometry
CLR-Rückgabetyp: SqlGeometry
Hinweise
Diese Methode verursacht möglicherweise eine Änderung des Typs der geometry-Instanz sowie eine leichte Verschiebung der Punkte einer geometry-Instanz.
Beispiele
Im ersten Beispiel wird eine ungültige LineString-Instanz erstellt, die sich selbst überlappt. Mithilfe von STIsValid() wird die Ungültigkeit dieser Instanz bestätigt. STIsValid() gibt für eine ungültige Instanz den Wert 0 (null) zurück.
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 0);
SELECT @g.STIsValid();
Im zweiten Beispiel wird die Instanz mit MakeValid() gültig gemacht, und die tatsächliche Gültigkeit wird überprüft. STIsValid() gibt für eine gültige Instanz den Wert 1 zurück.
SET @g = @g.MakeValid();
SELECT @g.STIsValid();
Das dritte Beispiel überprüft, ob die Instanz zu einer gültigen Instanz geändert wurde.
SELECT @g.ToString();
Wenn in diesem Beispiel die LineString-Instanz ausgewählt wird, werden die Werte als gültige MultiLineString-Instanz zurückgegeben.
MULTILINESTRING ((0 2, 1 1, 2 2), (1 1, 1 0))
Im folgenden Beispiel wird eine CircularString-Instanz in eine Point-Instanz konvertiert.
DECLARE @g geometry = 'CIRCULARSTRING(1 1, 1 1, 1 1)';
SELECT @g.MakeValid().ToString();