Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Polígono espacial SQL de dentro para fora


Você pode verificar, se o resultado do EnvelopeAngle() para a geografia era 180, então use o ReorientObject() função para corrigi-lo.

Aqui está a amostra:
--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 dito nos comentários, você pode corrigir as geometrias atuais, usando um simples comando de atualização (no caso de você ter certeza de que elas não estão corretas):
UPDATE foo_table SET bar_column = bar_column.ReorientObject() 
    WHERE bar_column.EnvelopeAngle() > 90