Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Polygone spatial SQL à l'envers

Vous pouvez vérifier si le résultat de EnvelopeAngle() méthode pour la géographie était 180, puis utilisez le ReorientObject() fonction pour le corriger.

Voici l'exemple :

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

MODIFIER comme indiqué dans les commentaires, vous pouvez corriger les géométries actuelles à l'aide d'une simple commande de mise à jour (dans le cas où vous êtes sûr qu'elles ne sont pas correctes) :

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