sql >> Base de Datos >  >> RDS >> Sqlserver

Polígono espacial SQL de adentro hacia afuera

Puede comprobar si el resultado de EnvelopeAngle() el método para la geografía fue 180, luego use ReorientObject() función para corregirlo.

Aquí está la muestra:

--A CW polygon
DECLARE @G3 GEOGRAPHY = 'POLYGON ((45 45, 44 45, 44 46, 45 46, 45 45))';    
SELECT @G3.EnvelopeAngle();                --180
SELECT @G3.ReorientObject().STAsText();    --POLYGON ((44 46, 44 45, 45 45, 45 46, 44 46))

EDITAR como se indica en los comentarios, puede corregir las geometrías actuales, usando un simple comando de actualización (en caso de que esté seguro de que no son correctas):

UPDATE foo_table SET bar_column = bar_column.ReorientObject() 
    WHERE bar_column.EnvelopeAngle() > 90