Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

GEOMETRY

Termin Definicja
GEOMETRY

GEOMETRY to typ danych SQL Server przechowujący współrzędne w płaskim, kartezjańskim układzie odniesienia.

Model współrzędnych typu geometry w SQL Server

GEOMETRY jest typem danych przestrzennych dostępnym w Microsoft SQL Server. Przechowuje obiekty opisane w płaskim, kartezjańskim układzie współrzędnych, dlatego wartości X i Y są traktowane jako położenie na płaszczyźnie, a nie jako długość i szerokość geograficzna na powierzchni Ziemi. W jednej kolumnie tego typu można zapisywać między innymi punkty, odcinki, linie łamane, wielokąty, kolekcje obiektów oraz ich odpowiedniki wieloelementowe, takie jak MultiPoint, MultiLineString i MultiPolygon.

Każda instancja geometry ma identyfikator układu odniesienia SRID, przechowywany jako liczba całkowita. W SQL Server typ geometry domyślnie korzysta z SRID 0. Sam numer SRID nie powoduje automatycznego przeliczenia współrzędnych ani zmiany ich jednostek. Oznacza to, że aplikacja i projekt bazy muszą jednoznacznie określać, co oznaczają wartości X i Y, na przykład metry w lokalnym układzie płaskim albo jednostki wynikające z konkretnego układu kartograficznego. SQL Server nie interpretuje geometrii jako danych geograficznych tylko dlatego, że współrzędne przypominają wartości używane dla map.

Tworzenie, odczyt i budowa obiektów przestrzennych

Obiekt geometry można utworzyć z tekstu w formacie WKT za pomocą metod takich jak geometry::STGeomFromText() oraz geometry::Parse(). Przykładowo punkt zapisany jako POINT (21.0122 52.2297) może zostać przekazany do konstruktora wraz z odpowiednim SRID. Wartości należy podawać w kolejności X Y. Dla wielokąta SQL Server wymaga zamkniętego pierścienia, czyli takiego, w którym ostatni punkt ma te same współrzędne co pierwszy. Błędnie zbudowany tekst WKT może spowodować błąd podczas konwersji zamiast utworzenia poprawnej instancji.

Do eksportowania danych służą między innymi STAsText(), ToString() i STAsBinary(). Metoda STSrid zwraca SRID obiektu, a właściwości STX i STY mogą być używane dla punktu. Dla bardziej złożonych obiektów dostępne są metody określające liczbę punktów, części i figur, a także metody pobierające konkretny element kolekcji. SQL Server obsługuje również współrzędne Z i M, lecz ich obecność nie zmienia podstawowej zasady obliczeń typu geometry: operacje przestrzenne są oparte na płaskiej geometrii X Y, natomiast Z i M pełnią role dodatkowych wartości opisowych lub pomiarowych.

Relacje przestrzenne, odległości i poprawność danych

Typ geometry udostępnia metody do badania relacji między obiektami. STIntersects() sprawdza, czy obiekty mają wspólną część, STContains() określa, czy jeden obiekt zawiera drugi, a STWithin() bada relację odwrotną. STDistance() zwraca odległość w jednostkach układu współrzędnych, natomiast STLength() i STArea() obliczają odpowiednio długość oraz pole. Wyniki tych metod należy interpretować w kontekście przyjętego układu i jego jednostek. Dla danych o współrzędnych geograficznych użycie geometry może prowadzić do innych wyników niż zastosowanie typu geography, ponieważ geometry nie uwzględnia krzywizny Ziemi.

Przed wykonywaniem analiz warto sprawdzić poprawność obiektów metodą STIsValid(). Nieprawidłowy wielokąt może mieć między innymi samoprzecinające się krawędzie albo niepoprawną strukturę pierścieni. Metoda MakeValid() próbuje utworzyć poprawną reprezentację, ale rezultat może mieć inny typ lub strukturę niż dane wejściowe, dlatego powinien zostać zweryfikowany przez aplikację. Istotna jest również zgodność SRID obu operandów. Operacje przestrzenne wymagające porównania geometrii mogą zwrócić wartość NULL albo nie dać oczekiwanego wyniku, gdy obiekty pochodzą z niezgodnych układów odniesienia lub gdy jedna z wartości jest NULL.

Indeksowanie GEOMETRY i diagnostyka zapytań

Kolumny typu geometry mogą być indeksowane za pomocą indeksu przestrzennego SQL Server, na przykład poleceniem CREATE SPATIAL INDEX zdefiniowanym dla konkretnej kolumny. Indeks nie zastępuje zwykłych indeksów relacyjnych i nie przyspiesza automatycznie każdego zapytania. Jego skuteczność zależy od rozmiaru tabeli, rozkładu obiektów, użytego predykatu przestrzennego, selektywności warunków oraz parametrów indeksu. Przed oceną wydajności należy sprawdzić plan wykonania i potwierdzić, czy optymalizator rzeczywiście wykorzystuje indeks przestrzenny.

W praktyce diagnostykę zaczyna się od sprawdzenia typu kolumny, wartości SRID, liczby wartości NULL i poprawności przykładowych obiektów. Przydatne jest wyświetlenie danych przez STAsText() oraz porównanie zakresów współrzędnych, ponieważ pomylona kolejność X Y albo współrzędne zapisane w innym układzie mogą przesunąć obiekt bez powodowania błędu składniowego. Należy też pamiętać, że metody geometry są metodami instancji i zwykle stosuje się je w postaci kolumna.STIntersects(@obszar) = 1 lub kolumna.STDistance(@punkt) < @promien. Weryfikacja wartości wejściowych, planu zapytania i zgodności SRID pozwala rozdzielić problem uszkodzonych danych od problemu konstrukcji samego zapytania.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę