Mam kilkaset kształty ( polygon
S multipolygon
s) każda składająca się z dziesiątków tysięcy punktów, które staram się dostać do SQL 2008.
Niestety kształty, które próbowałem zaimportować, są „praworęczne” (obwód każdego z nich jest narysowany zgodnie z ruchem wskazówek zegara wokół zawartych w nim punktów). Serwer SQL przyjmuje kształty „leworęczne” (przeciwnie do ruchu wskazówek zegara wokół wnętrza), przynajmniej dla geography
typów. Oznacza to, że SQL zakłada, że próbuję wybrać całą ziemię oprócz mojego kształtu. Niektórzy opisują to jako kształty „na lewą stronę”.
Z MSDN , który frustrująco nie mówi, której orientacji pierścienia należy użyć:
Jeśli używamy
geography
typu danych do przechowywania instancji przestrzennej, musimy określić orientację pierścienia i dokładnie opisać lokalizację instancji.
Jeśli użyjesz niewłaściwej orientacji pierścienia w SQL 2008, ulega awarii z następującym błędem (wyróżnienie moje):
Wystąpił błąd programu .NET Framework podczas wykonywania procedury zdefiniowanej przez użytkownika lub agregacji „geografii”: Microsoft.SqlServer.Types.GLArgumentException: 24205: Podane dane wejściowe nie reprezentują prawidłowej instancji geograficznej, ponieważ przekraczają jedną półkulę. Każda instancja geograficzna musi mieścić się na jednej półkuli. Częstą przyczyną tego błędu jest niewłaściwa orientacja wielokąta.
Importowanie kształtów geometry
zamiast geography
działa dobrze, ale chciałbym użyć, geography
jeśli mogę.
W SQL 2012 rozwiązanie tego problemu wydaje się dość trywialne , ale jestem przywiązany do 2008 roku.
Jak konwertować kształty?