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

SQL Server 2012, geografia.STContains, resultado errado?


Agora encontrei o problema. O usuário desenhou o polígono começando no canto inferior direito e foi no sentido horário. Se eu reordenar os pontos da maior latitude e, em seguida, ir no sentido contrário, ordenando por longo, lat, funciona. Encontrei um ajudante para isso, mas isso só funciona se você "saber que está errado":
if(sqlGeography.EnvelopeAngle() > 90)
    sqlGeography ? sqlGeography.ReorientObject();

Basta montar uma pequena solução que corrigirá meus valores:https://github.com/danielwertheim/GeographyFactory

e uma postagem no blog sobre isso: http://danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position/

e um acompanhamento sobre o verdadeiro "problema", a regra da mão esquerda:

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