Freigeben über


Typen von räumlichen Daten

Es gibt zwei Typen von räumlichen Daten. Der geometry-Datentyp unterstützt planare bzw. euklidische Daten. Der geometry-Datentyp entspricht der Open Geospatial Consortium (OGC) Simple Features for SQL Specification Version 1.1.0.

Zudem unterstützt SQL Server den geography-Datentyp, der ellipsenförmige Daten speichert, z. B. GPS-Breiten- und Längenkoordinaten.

Der geometry-Datentyp und der geography-Datentyp unterstützen elf räumliche Datenobjekte bzw. Instanztypen. Nur sieben dieser Instanztypen sind jedoch instanziierbar, Sie können diese Instanzen erstellen und Sie in einer Datenbanken bearbeiten (oder instanziieren). Diese Instanzen leiten bestimmte Eigenschaften von ihren übergeordneten Datentypen, die sie als Points-, LineStrings-, Polygons- oder als mehrfache geometry- oder geography-Instanzen in einer GeometryCollection-Auflistung auszeichnen.

Die nachfolgende Abbildung stellt die geometry-Hierarchie dar, auf der der geometry-Datentyp und der geography-Datentyp basieren. Die instanziierbaren Typen von geometry und geography sind in Blau dargestellt.

Hierarchie des Geometrietyps

Wie aus der Abbildung hervorgeht, handelt es sich bei den sieben instanziierbaren Typen der Datentypen geometry und geography um Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon und GeometryCollection. Die Typen geometry und geography können eine spezifische Instanz erkennen, wenn es sich um eine wohlgeformte Instanz handelt. Dies gilt auch, wenn die Instanz nicht explizit definiert ist. Wenn Sie beispielsweise eine Point-Instanz explizit mit der STPointFromText()-Methode definieren, erkennen geometry und geography die Instanz als Point, sofern die Methodeneingabe wohlgeformt ist. Wenn Sie die gleiche Instanz mit der STGeomFromText()-Methode definieren, erkennen sowohl der geometry-Datentyp als auch der geography-Datentyp die Instanz als Point.

Weitere Informationen zu diesen Instanzen finden Sie unter folgenden Themen:

Unterschiede zwischen den beiden Datentypen

Die beiden Typen von räumlichen Daten verhalten sich oft ganz ähnlich. Es gibt aber einige wichtige Unterschiede in Bezug darauf, wie Daten gespeichert und bearbeitet werden.

Definieren von verbindenden Rändern

Die definierenden Daten für die Typen LineString und Polygon sind nur Scheitelpunkte. Der verbindende Rand zwischen zwei Scheitelpunkten in einer Geometrie ist eine gerade Linie. Die verbindende Kante zwischen zwei Scheitelpunkten in einem Geografietyp ist ein kurzer elliptischer Bogen zwischen den beiden Scheitelpunkten. Eine große Ellipse ist die Schnittmenge des Ellipsoids mit einer Ebene durch seinen Mittelpunkt, und ein großer elliptischer Bogen ist ein Bogensegment auf der großen Ellipse.

Maße in Typen von räumlichen Daten

Im planaren bzw. euklidischen System werden Maße von Entfernungen und Flächen in der gleichen Maßeinheit angegeben wie die Koordinaten. Bei Verwendung des geometry-Datentyps beträgt die Entfernung zwischen (2, 2) und (5, 6) ungeachtet der verwendeten Maßeinheit 5 Einheiten.

Im ellipsenförmigen System werden Koordinaten in Breiten- und Längengraden angegeben. Längen und Flächen werden in der Regel in Meter und Quadratmeter gemessen. Die Maßeinheit kann jedoch vom SRID der geography-Instanz abhängen. Die gängigste Maßeinheit für den geography-Datentyp ist Meter.

Ausrichtung von räumlichen Daten

Im planaren System ist die Ringausrichtung eines Polygons kein wichtiger Faktor. Beispielsweise entspricht das durch ((0, 0), (10, 0), (0, 20), (0, 0)) gegebene Polygon dem Polygon, das durch ((0, 0), (0, 20), (10, 0), (0, 0)) beschrieben wird. Die OGC Simple Features for SQL-Spezifikation schreibt keine Ringreihenfolge vor, und SQL Server erzwingt keine Ringreihenfolge.

In einem ellipsenförmigen System hat ein Polygon ohne Ausrichtung keine Bedeutung bzw. ist mehrdeutig. Beschreibt beispielsweise ein Ring um den Äquator die nördliche oder die südliche Hemisphäre? Wenn wir den geography-Datentyp zum Speichern von räumlichen Daten verwenden, müssen wir die Ausrichtung des Rings angegeben und die Position der Instanz genau beschreiben.

In SQL Server 2008 gelten für die Verwendung des geography-Datentyps folgende Beschränkungen:

  • Jede geography-Instanz muss in genau eine Hemisphäre passen. Es können keine räumlichen Objekte gespeichert werden, die größer als eine Hemisphäre sind.

  • Jede geography-Instanz aus einer Darstellung des Typs Open Geospatial Consortium (OGC) Well-Known Text (WKT) oder Well-Known Binary (WKB), die ein Objekt ergibt, das größer als eine Hemisphäre ist, löst eine Ausnahme des Typs ArgumentException aus.

  • Die Methoden des geography-Datentyps, die Eingaben von zwei geography-Instanzen erwarten, z. B. STIntersection(), STUnion(), STDifference() und STSymDifference(), geben NULL zurück, wenn das Ergebnis der Methode nicht in eine einzelne Hemisphäre passt. Auch STBuffer() gibt NULL zurück, wenn die Ausgabe größer als eine einzelne Hemisphäre ist.

Äußere und innere Ringe sind beim geography-Datentyp nicht von Bedeutung

In der OGC Simple Features for SQL Specification werden äußere und innere Ringe erörtert, diese Unterscheidung ist beim geography-Datentyp von SQL Server aber nicht sinnvoll: Jeder Ring eines Polygons kann als äußerer Ring interpretiert werden.

Weitere Informationen zu den OGC-Spezifikationen finden Sie in den folgenden Themen:

OGC Specifications, Simple Feature Access Part 1 - Common Architecture

OGC Specifications, Simple Feature Access Part 2 – SQL Options