Ich habe ein paar hundert Formen ( polygons und multipolygons), die jeweils aus Zehntausenden von Punkten bestehen, die ich in SQL 2008 einführen möchte.
Leider sind die Formen, die ich zu importieren versucht habe, "rechtshändig" (der Umfang jeder Form wird im Uhrzeigersinn um die darin enthaltenen Punkte gezogen). SQL Server nimmt zumindest für geographyTypen "linkshändige" Formen an (gegen den Uhrzeigersinn im Inneren) . Dies bedeutet, dass SQL davon ausgeht, dass ich versuche, die gesamte Erde mit Ausnahme meiner Form auszuwählen . Einige Leute beschreiben dies als "Inside-Out" -Formen.
Von MSDN , das frustrierend nicht sagt, welche Ringorientierung man verwenden soll:
Wenn wir den
geographyDatentyp zum Speichern der räumlichen Instanz verwenden, müssen wir die Ausrichtung des Rings angeben und den Ort der Instanz genau beschreiben.
Wenn Sie in SQL 2008 die falsche Ringausrichtung verwenden, stürzt der folgende Fehler ab (Hervorhebung von mir):
Während der Ausführung einer benutzerdefinierten Routine oder einer aggregierten "Geografie" ist ein .NET Framework-Fehler aufgetreten: Microsoft.SqlServer.Types.GLArgumentException: 24205: Die angegebene Eingabe stellt keine gültige Geografieinstanz dar, da sie eine einzelne Hemisphäre überschreitet. Jede Geografieinstanz muss in eine einzelne Hemisphäre passen. Ein häufiger Grund für diesen Fehler ist, dass ein Polygon die falsche Ringausrichtung hat.
Das Importieren der Formen als geometrystatt geographyfunktioniert einwandfrei, aber ich würde es gerne verwenden, geographywenn ich kann.
In SQL 2012 scheint es ziemlich trivial zu sein, dieses Problem zu beheben, aber ich bin an 2008 gebunden.
Wie soll ich die Formen konvertieren?