Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Räumliches Polygon von innen nach außen

Sie können überprüfen, ob das Ergebnis von EnvelopeAngle() Methode für die Geographie war 180, dann verwenden Sie ReorientObject() Funktion, um es zu korrigieren.

Hier ist das Beispiel:

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

BEARBEITEN Wie in den Kommentaren angegeben, können Sie aktuelle Geometrien korrigieren, indem Sie einen einfachen Aktualisierungsbefehl verwenden (falls Sie sicher sind, dass sie nicht korrekt sind):

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