Ora ho trovato il problema. L'utente ha disegnato il poligono iniziando in basso a destra e procedendo in senso orario. Se riordino i punti dalla latitudine maggiore e poi procedo in senso inverso ordinando su long, lat funziona. Ho trovato un aiuto per questo, ma funziona solo se "sai che è sbagliato":
if(sqlGeography.EnvelopeAngle() > 90)
sqlGeography ? sqlGeography.ReorientObject();
Basta mettere insieme una piccola soluzione che risolverà i miei valori:https://github.com/danielwertheim/GeographyFactory
e un post sul blog a riguardo: http://danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position/
e un seguito sul vero "problema", la regola della mano sinistra:
http:// danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position-no/