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. Beachten Sie, dass "ST_Curve", "ST_Surface", "ST_MultiCurve" und "ST_MultiSurface" als nicht instanziierte Typen definiert sind. Für diese Typen sind keine Konstruktoren definiert.

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. Jede Subclass verfügt über bestimmte Funktionen, die Informationen zur Subclass zurückgeben können. Eine Zusammenfassung der Subclasses, Beschreibungen und Beispielfunktionen, die verwendet werden können, um weitere Informationen dazu zu erhalten, sind in der folgenden Tabelle aufgeführt:

Subtype

Beschreibung

Mit dem Subtype verwendete Funktionen

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.
  • Wird zur Definition von Features verwendet, z. B. Ölquellen, Landmarks und Höhen.

  • ST_X – Gibt den X-Koordinatenwert eines Punkts als Zahl mit doppelter Genauigkeit aus.
  • ST_Y – Gibt den Y-Koordinatenwert eines Punkts als Zahl mit doppelter Genauigkeit aus.
  • ST_Z – Gibt den Z-Koordinatenwert eines Punkts als Zahl mit doppelter Genauigkeit aus.
  • ST_M – Gibt den M-Koordinatenwert eines Punkts als Zahl mit doppelter Genauigkeit aus.

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.
  • Mit "ST_LineStrings" werden häufig lineare Features wie Straßen, Flüsse und Stromleitungen definiert.

  • ST_StartPoint– Gibt den ersten Punkt für einen Linestring zurück.
  • ST_EndPoint – Gibt den letzten Punkt für einen Linestring zurück.
  • ST_PointN – Verwendet einen Linestring und einen Index zum n-ten Punkt und gibt diesen Punkt zurück.
  • ST_Length – Gibt die Länge eines Linestrings als Zahl mit doppelter Genauigkeit zurück.
  • ST_NumPoints – Gibt die Anzahl von Punkten in einer Linestringfolge als Ganzzahl zurück.
  • ST_IsRing – Gibt 1 (TRUE) zurück, wenn ein Linestring ein Ring ist, oder 0 (FALSE), falls nicht.
  • ST_IsClosed– Gibt 1 (TRUE) zurück, wenn ein Linestring geschlossen ist, oder 0 (FALSE), falls nicht.

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.
  • Definiert Flurstücke, Gewässer und andere Features, die eine räumliche Ausdehnung haben.

  • ST_Area – Gibt die Fläche eines Polygons als Zahl mit doppelter Genauigkeit zurück.
  • ST_ExteriorRing – Gibt den äußeren Ring eines Polygons als Linestring zurück.
  • ST_NumInteriorRing – Gibt die Anzahl der inneren Ringe eines Polygons zurück.
  • ST_InteriorRingN – Wertet ein Polygon und einen Index aus und gibt den n-ten inneren Ring als Linestring zurück.
  • ST_Centroid – Gibt einen Punkt zurück, der die Mitte des Polygon-Envelopes darstellt.
  • ST_PointOnSurface – Gibt einen Punkt zurück, der sicher auf der Oberfläche des Polygons liegt.

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.
  • Definiert Dinge wie Übertragungsmuster und Orte von Krankheitsausbrüchen definieren.

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.
  • Wird zur Definition von Entitäten, z. B. Streams oder Straßennetze, verwendet.

  • ST_Length – Gibt die kumulative Länge aller "ST_LineString"-Elemente eines Multilinestrings als Zahl mit doppelter Genauigkeit zurück.
  • ST_IsClosed– Gibt 1 (TRUE) zurück, wenn der Multilinestring geschlossen ist, oder 0 (FALSE), falls nicht.

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.
  • Damit werden Features wie Waldstrata und nicht durchgängige Flurstücke (z. B. Inselketten im Pazifik) definiert.

  • ST_Area – Gibt die kumulative "ST_Area" eines Multipolygon-Polygonelements als Zahl mit doppelter Genauigkeit zurück.
  • ST_Centroid – Gibt einen Punkt zurück, der die Mitte eines Multipolygon-Envelopes darstellt.
  • ST_PointOnSurface – Gibt einen Punkt zurück, der sicher normal zur Oberfläche eines der zugehörigen Multipolygon-Polygonelemente ist.

ST_Geometry-Subtypes

Beachten Sie, dass jede Subclass die Eigenschaften der übergeordneten Objektklasse "ST_Geometry" erbt, aber auch über eigene Eigenschaften verfügt. Funktionen für den Datentyp "ST_Geometry" akzeptieren einen beliebigen Datentyp für die Subclass. 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.


3/6/2012