Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Poligono spaziale SQL al rovescio

Puoi controllare se il risultato di EnvelopeAngle() il metodo per la geografia era 180, quindi usa il ReorientObject() funzione per correggerlo.

Ecco l'esempio:

--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))

MODIFICA come indicato nei commenti puoi correggere le geometrie attuali, utilizzando un semplice comando di aggiornamento (nel caso tu sia sicuro che non siano corrette):

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