Freigeben über


MakeValid (geography-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Konvertiert eine ungültige geography-Instanz in eine gültige geography-Instanz mit einem gültigen Open Geospatial-Consortium-Typ (OGC).

Wenn von einem Eingabeobjekt FALSE für STIsValid() zurückgegeben wird, konvertiert MakeValid() die ungültige in eine gültige Instanz.

Diese geography -Datentypmethode unterstützt Instanzen von FullGlobe oder räumliche Instanzen, die größer als eine Hemisphäre sind.

Syntax

  
.MakeValid ()  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Rückgabetypen

SQL Server-Rückgabetyp: geography

CLR-Rückgabetyp: SqlGeography

Bemerkungen

Diese Methode ändert möglicherweise den Typ der Instanz von geography. Darüber hinaus ist eine geringfügige Verschiebung der Punkte der Instanz von geography möglich. Die Ergebnisse einiger Methoden wie NumPoint() können sich ändern.

In Fällen, in denen die ungültige räumliche Instanz den Äquator schneidet und einen EnvelopeAngle() = 180 aufweist, wird eine Instanz von FullGlobe zurückgegeben. Die MakeValid()geography-Datentypmethode versucht, gültige Instanzen zurückzugeben. Die Richtigkeit oder Vollständigkeit der Ergebnisse kann jedoch nicht garantiert werden.

Hinweis

Objekte, die nicht gültig sind, können in der Datenbank gespeichert werden. Für ungültige Instanzen (für die von STIsValid() FALSE zurückgegeben wird) können Methoden verwendet werden, die die Gültigkeit überprüfen oder Exporte ermöglichen: STIsValid(), MakeValid(), STAsText(), STAsBinary(), ToString(), AsTextZM() und AsGml().

Diese Methode ist nicht exakt.

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 geography;  
SET @g = geography::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 4326);  
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))  

Weitere Informationen

STIsValid (geometry-Datentyp)
Erweiterte Methoden für geography-Instanzen