Was ist der Speichertyp "ST_Geometry"?

Der Datentyp "ST_Geometry" ist ein benutzerdefinierter Datentyp, der es Ihnen ermöglicht, Spalten zu definieren, die räumliche Daten speichern.

"ST_Geometry" selbst ist eine abstrakte, nicht instanziierte übergeordnete Objektklasse. Ihre Subclasses können jedoch instanziiert sein. Bei einem instanziierten Datentyp handelt es sich um einen Datentyp, der als Tabellenspalte definiert werden kann und darin eingefügte Werte seines Typs aufweisen kann.

Eine Spalte kann zwar als Typ "ST_Geometry" definiert werden, es werden jedoch keine ST_Geometry-Werte in die Spalte eingefügt, da sie nicht instanziiert werden kann. Stattdessen werden die Subclass-Werte eingefügt.

Im folgenden Diagramm wird die Hierarchie des Datentyps "ST_Geometry-Datentyps" und seiner Subclasses veranschaulicht.

ST_Geometry
Die übergeordnete Objektklasse "ST_Geometry" und ihre Subclasses

Subclasses

Die Subclasses von "ST_Geometry" sind in zwei Kategorien unterteilt: die Subclasses der Basisgeometrie und die Subclasses der homogenen Sammlung. Die Basisgeometrien umfassen "ST_Point", "ST_LineString" und "ST_Polygon", während die homogenen Sammlungen "ST_MultiPoint", "ST_MultiLineString" und "ST_MultiPolygon" umfassen. Wie der Name schon besagt, handelt es sich bei den homogenen Sammlungen um Sammlungen der Basisgeometrien. Homogene Sammlungen weisen neben den mit der Basisgeometrie gemeinsamen Eigenschaften auch eigene Eigenschaften auf.

Jede Subclass speichert den durch ihren Namen implizierten Geometrietyp: "ST_MultiPoint" speichert beispielsweise Multipoints. In der folgenden Tabelle finden Sie eine Liste mit den Subclasses und die dazugehörigen Beschreibungen:

Subtype

Beschreibung

ST_Point

  • Eine nulldimensionale Geometrie, die eine einzelne Position in einem Koordinatenbereich einnimmt.
  • Besitzt einen einzigen XY-Koordinatenwert, ist immer eine einfache Geometrie und weist eine NULL-Grenze auf.

ST_LineString

  • Ein eindimensionales Objekt, das als Folge von Punkten gespeichert ist und einen linearen interpolierten Pfad definiert.
  • "ST_LineStrings" besitzen eine Länge.
  • Der "ST_LineString" besitzt eine einfache Geometrie, wenn er seinen Innenbereich nicht schneidet.
  • Die Endpunkte (Grenze) eines geschlossenen "ST_LineString" nehmen denselben Punkt im Raum ein.
  • Ein "ST_LineString" ist ein Ring, wenn er geschlossen ist und eine einfache Geometrie aufweist.
  • Die Endpunkte bilden im Normalfall die Grenze eines "ST_LineString". Wenn der "ST_LineString" geschlossen ist, ist die Grenze jedoch NULL.
  • Der Innenbereich eines "ST_LineString" ist der verbundene Pfad, der zwischen den Endpunkten liegt. Wenn er geschlossen ist, gibt es einen durchgehenden Innenbereich.

ST_Polygon

  • Eine zweidimensionale Oberfläche, die als Folge von Punkten gespeichert ist und den umfassenden äußeren Ring sowie 0 oder mehr innere Ringe definiert.
  • "ST_Polygon" weist eine Fläche auf und ist immer eine einfache Geometrie.
  • Der äußere und alle inneren Ringe definieren die Grenze eines "ST_Polygon". Der Raum, der zwischen den Ringen eingeschlossen ist, definiert den Innenbereich des "ST_Polygon".
  • Die Ringe eines "ST_Polygon" dürfen sich an einem Tangentenpunkt schneiden, jedoch nicht kreuzen.

ST_MultiPoint

  • Eine Sammlung von ST_Points
  • Weist die Dimension 0 auf.
  • Ein "ST_MultiPoint" ist einfach, wenn keines seiner Elemente den gleichen Koordinatenbereich einnimmt.
  • Die Grenze eines "ST_MultiPoint" beträgt NULL.

ST_MultiLineString

  • Eine Sammlung von ST_LineStrings
  • "ST_MultiLineStrings" besitzen eine Länge.
  • "ST_MultiLineStrings" sind einfach, wenn sich nur die Endpunkte der "ST_LineString"-Elemente schneiden.
  • "ST_MultiLineStrings" sind komplex, wenn sich die Innenbereiche der "ST_LineString"-Elemente schneiden.
  • Die Grenze eines "ST_MultiLineString" bilden die Endpunkte der "ST_LineString"-Elemente, die nicht geschnitten werden.
  • Der "ST_MultiLineString" ist geschlossen, wenn alle "ST_LineString"-Elemente geschlossen sind.
  • Die Grenze eines "ST_MultiLineString" ist NULL, wenn alle Endpunkte aller Elemente geschnitten werden.

ST_MultiPolygon

  • Eine Sammlung von Polygonen
  • "ST_MultiPolygons" besitzen eine Fläche.
  • Die Grenze eines ST_MultiPolygon ist die kumulative Länge der äußeren und inneren Ringe seiner Elemente.
  • Der Innenbereich eines "ST_MultiPolygon" ist als die kumulativen Innenbereiche der zugehörigen "ST_Polygon"-Elemente definiert.
  • Die Grenzen der Elemente eines "ST_MultiPolygon" dürfen sich nur an einem Tangentenpunkt schneiden.

ST_Geometry-Subtypes

Beachten Sie, dass jede Subclass die Eigenschaften der übergeordneten Objektklasse "ST_Geometry" erbt, aber auch über eigene Eigenschaften verfügt. Bei Funktionen, die für den Datentyp "ST_Geometry" verwendet werden können, sind alle Subclass-Entitätstypen zulässig. Einige Funktionen wurden jedoch auf Subclass-Ebene definiert und nehmen nur bestimmte Subclasses an. Die Funktion "ST_GeometryN" akzeptiert beispielsweise nur die Subtype-Werte "ST_MultiLinestring", "ST_MultiPoint" oder "ST_MultiPolygon" als Eingabe.

Um die Subclass einer "ST_Geometry" zu ermitteln, können Sie die Funktion "ST_GeometryType" verwenden. Die Funktion "ST_GeometryType" gibt für eine "ST_Geometry" die instanziierte Subclass in der Form einer Zeichenfolge zurück. Um zu ermitteln, wie viele Basisgeometrieelemente in einer homogenen Sammlung enthalten sind, können Sie die Funktion "ST_NumGeometries" verwenden, die eine homogene Sammlung annimmt und die Anzahl der enthaltenen Basisgeometrieelemente zurückgibt.

9/11/2013