MakeValid (tipo de datos geography)
Convierte una instancia de geography que no es válida en una instancia de geography válida con un tipo de Open Geospatial Consortium (OGC) válido.
Si un objeto de entrada devuelve false para STIsValid(), MakeValid() convierte la instancia que no es válida en una instancia válida.
Este método de tipo de datos de geografía admite instancias de FullGlobe o instancias espaciales mayores que un hemisferio.
Sintaxis
.MakeValid ()
Tipos de valores devueltos
SQL Server tipo de valor devuelto: geography
Tipo de valor devuelto de CLR: SqlGeography
Comentarios
Este método puede cambiar el tipo de la instancia de geography. Además, los puntos de una instancia de geography pueden desplazarse ligeramente. Los resultados de algunos métodos, como NumPoint(), pueden cambiar.
En los casos en los que la instancia espacial que no es válida corta en intersección con el ecuador y el valor de EnvelopeAngle() es 180, se devolverá una instancia de FullGlobe. El método MakeValid() del tipo de datos geography hará todo lo posible pare devolver instancias válidas, pero no está garantizado que los resultados sean precisos ni exactos.
[!NOTA]
Los objetos no válidos se pueden almacenar en la base de datos. Los métodos que se pueden ejecutar en instancias no válidas (aquellas instancias en las que STIsValid() devuelve False) son métodos que comprueban la validez o permiten la exportación: STIsValid(), MakeValid(), STAsText(), STAsBinary(), ToString(), AsTextZM() y AsGml().
Este método no es preciso.
Ejemplos
En el primer ejemplo se crea una instancia de LineString no válida que se superpone a sí misma y usa STIsValid() para confirmar que es una instancia no válida. STIsValid() devuelve el valor 0 para una instancia no válida.
DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 4326);
SELECT @g.STIsValid();
En el segundo ejemplo se usa MakeValid() para convertir la instancia en válida y comprobar que de hecho es así. STIsValid() devuelve el valor 1 para una instancia válida.
SET @g = @g.MakeValid();
SELECT @g.STIsValid();
En el tercer ejemplo se comprueba cómo se ha cambiado la instancia para convertirla en una instancia válida.
SELECT @g.ToString();
En este ejemplo, cuando se selecciona la instancia de LineString, los valores se devuelven como una instancia de MultiLineString válida.
MULTILINESTRING ((0 2, 1 1, 2 2), (1 1, 1 0))
Vea también
Referencia
STIsValid (tipo de datos geometry)