Ho qualche centinaio di forme ( polygon
S e multipolygon
I) Ogni composto da decine di migliaia di punti che sto cercando di entrare in SQL 2008.
Sfortunatamente, le forme che ho cercato di importare sono "destrorse" (il perimetro di ognuna è disegnato in senso orario attorno ai punti che contiene). Il server SQL assume forme "mancine" (in senso antiorario all'interno), almeno per i geography
tipi. Ciò significa che SQL presuppone che sto cercando di selezionare l'intera terra tranne la mia forma. Alcune persone lo descrivono come forme "dentro e fuori".
Da MSDN , che frustrantemente non dice quale orientamento dell'anello si debba usare:
Se utilizziamo il
geography
tipo di dati per memorizzare l'istanza spaziale, dobbiamo specificare l'orientamento dell'anello e descrivere accuratamente la posizione dell'istanza.
Se si utilizza l'orientamento dell'anello errato in SQL 2008, si arresta in modo anomalo con il seguente errore (sottolineatura mia):
Si è verificato un errore .NET Framework durante l'esecuzione della routine definita dall'utente o della "geografia" aggregata: Microsoft.SqlServer.Types.GLArgumentException: 24205: l'input specificato non rappresenta un'istanza geografica valida perché supera un singolo emisfero. Ogni istanza geografica deve rientrare in un singolo emisfero. Un motivo comune per questo errore è che un poligono ha l'orientamento dell'anello errato.
Importare le forme come geometry
invece geography
funziona bene, ma mi piacerebbe usare geography
se posso.
In SQL 2012, sembra abbastanza banale risolvere questo problema, ma sono legato al 2008.
Come devo convertire le forme?