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

SQL Server 2012, geography.STContains, falsches Ergebnis?

Jetzt habe ich das Problem gefunden. Der Benutzer zeichnete das Polygon beginnend unten rechts und ging im Uhrzeigersinn. Wenn ich die Punkte vom größten Breitengrad neu anordne und dann gegenläufig vorgehe, indem ich nach langem Breitengrad sortiere, funktioniert es. Habe einen Helfer dafür gefunden, aber das funktioniert nur, wenn man "weiß, dass es falsch ist":

if(sqlGeography.EnvelopeAngle() > 90)
    sqlGeography ? sqlGeography.ReorientObject();

Einfach eine kleine Lösung zusammenstellen, die meine Werte fixieren wird:https://github.com/danielwertheim/GeographyFactory

und ein Blogpost darüber: http://danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position/

und ein Follow-up über das eigentliche "Problem", die Regel der linken Hand:

http:// danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position-no/