Funktionen für räumliche Accessor-Funktionen für "ST_Geometry"

Räumliche Accessor-Funktionen geben die Eigenschaft einer Geometrie zurück. Accessor-Funktionen geben Informationen zu den folgenden Eigenschaften eines "ST_Geometry"-Features zurück:

Dimensionalität

Die Dimensionen einer Geometrie sind die erforderlichen Mindestkoordinaten (keine, X, Y), um die räumliche Ausdehnung der Geometrie zu definieren.

Eine Geometrie kann die Dimension 0, 1 oder 2 aufweisen.

Die Dimensionen im Einzelnen sind:

Die Subtypes "Point" und "Multipoint" besitzen die Dimension 0. Punkte stellen nulldimensionale Features dar, die mit einer einzigen Koordinate modelliert werden können, während Multipoints Daten darstellen, die mit einem Cluster nicht verbundener Koordinaten modelliert werden müssen.

Die Subtypes "Linestring" und "Multilinestring" besitzen die Dimension 1. Sie speichern Features wie Straßenabschnitte, verzweigte Flusssysteme und andere Features, die im Normalfall linear sind.

Die Subtypes "Polygon" und "Multipolygon" besitzen die Dimension 2. Waldbestände, Flurstücke, Gewässer und andere Features, deren Umfang eine definierbare Fläche umschließt, können vom Datentyp "Polygon" oder "Multipolygon" gerendert werden.

Die Dimension ist nicht nur als Eigenschaft des Subtypes wichtig, sondern auch bei der Bestimmung der räumlichen Beziehung von zwei Features. Die Dimension des bzw. der entstehenden Features legt fest, ob der Vorgang erfolgreich war. Die Dimensionen der Features werden untersucht, damit die Vergleichsmethode festgelegt werden kann.

Verwenden Sie die Funktion "ST_Dimension", um die Dimension einer Geometrie zu bewerten. Diese Funktion gibt die Dimension eines Features "ST_Geometry" als Ganzzahl zurück. Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Dimension.

Die Koordinaten einer Geometrie weisen ebenfalls Dimensionen auf. Wenn eine Geometrie lediglich X- und Y-Koordinaten besitzt, lautet die Koordinatendimension 2. Wenn X-, Y- und Z-Koordinaten vorhanden sind, lautet die Koordinatendimension 3. Wenn eine Geometrie X-, Y-, Z- und M-Koordinaten besitzt, lautet die Dimension 4.

Sie können die Funktion ST_CoordDim verwenden, um die in einer Geometrie vorhandenen Dimensionen zu ermitteln.

Z-Koordinaten

Manchen Geometrien ist eine Höhe oder Tiefe zugewiesen – eine dritte Dimension. Jeder der Punkte, die die Geometrie eines Features bilden, kann eine optionale Z-Koordinate besitzen, die eine Höhe oder Tiefe relativ zur Erdoberfläche darstellt.

Die Eigenschaftenfunktion ST_Is3D gibt für "ST_Geometry" den Wert "1" (TRUE) zurück, wenn die Funktion Z-Koordinaten besitzt, und den Wert "0" (FALSE), wenn keine Z-Koordinaten vorhanden sind.

Mit der Funktion ST_Z können Sie die Z-Koordinate eines Punktes bestimmen.

Die Funktion ST_MaxZ gibt die größte Z-Koordinate zurück, während die Funktion ST_MinZ die kleinste Z-Koordinate einer Geometrie zurückgibt.

Messwerte

Messwerte sind Werte, die den einzelnen Koordinaten zugewiesen sind. Sie werden in Anwendungen zur linearen Referenzierung und dynamischen Segmentierung verwendet. Die Kilometerschilder an einer Autobahn können beispielsweise Messwerte enthalten, die ihre Position angeben. Der Wert kann für alles stehen, was als Zahl mit doppelter Genauigkeit gespeichert werden kann.

Die Eigenschaftenfunktion ST_IsMeasured gibt für eine Geometrie den Wert "1" (TRUE) zurück, wenn Messwerte enthalten sind, und den Wert "0" (FALSE), wenn keine Messwerte enthalten sind. (Wird nur für die Oracle-Implementierung von "ST_Geometry" verwendet.)

Mit der Funktion ST_M können Sie den Messwert eines Punktes ermitteln.

Geometrietyp

Der Geometrietyp verweist auf den Typ der geometrischen Entität. Zu diesen zählen folgende:

"ST_Geometry" ist eine übergeordnete Objektklasse, die verschiedene Subtypes speichern kann. Verwenden Sie die Funktion ST_GeometryType oder ST_Entity (nur Oracle), um den Subtype einer Geometrie zu bestimmen.

Punktsammlung (Stützpunkte) und Anzahl der Punkte

Eine Geometrie kann null oder mehr Punkte aufweisen. Eine Geometrie gilt als leer, wenn sie null Punkte enthält. Der Subtype "Point" ist die einzige Geometrie, die auf null oder einen Punkt beschränkt ist. Alle anderen Subtypes können null oder mehr Punkte besitzen.

ST_Point

Ein "ST_Point" ist eine nulldimensionale Geometrie, die eine einzelne Position in einem Koordinatenbereich einnimmt. Ein "ST_Point" besitzt einen einzigen XY-Koordinatenwert, ist immer eine einfache Geometrie und weist eine NULL-Grenze auf. "ST_Point" kann zum Definieren von Features wie Ölquellen, Landmarks und Sammelstellen für Wasserproben verwendet werden.

Nachfolgend sind einige Funktionen genannt, die ausschließlich für den Datentyp "ST_Point" verwendet werden können:

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

ST_MultiPoint

Ein "ST_MultiPoint" ist eine Sammlung von "ST_Points" und besitzt wie seine Elemente die Dimension 0. Es handelt sich um eine einfache Geometrie, wenn keines der Elemente denselben Koordinatenbereich einnimmt. Die Grenze eines "ST_MultiPoint" beträgt NULL. "ST_MultiPoints" können Dinge wie Übertragungsmuster und Orte von Krankheitsausbrüchen definieren.

Länge und Fläche

Länge und Fläche sind messbare Eigenschaften von Geometrien. Linestrings und die Elemente von Multilinestrings sind eindimensional und besitzen die Eigenschaft einer Länge. Polygone und die Elemente von Multipolygonen sind zweidimensionale Oberflächen und besitzen demnach eine messbare Fläche. Sie können die Funktionen ST_Length und ST_Area verwenden, um diese Eigenschaften zu bestimmen. Maßeinheiten variieren abhängig davon, wie die Daten gespeichert sind.

ST_LineString

Ein ST_LineString ist ein eindimensionales Objekt, das als Folge von Punkten gespeichert ist und einen linearen interpolierten Pfad definiert. 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. Wie die anderen Eigenschaften, die von der übergeordneten Objektklasse "ST_Geometry" übernommen werden, besitzen "ST_LineStrings" eine Länge. Mit "ST_LineStrings" werden häufig lineare Features wie Straßen, Flüsse und Stromleitungen definiert.

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.

Nachfolgend sind einige Funktionen genannt, die für "ST_LineStrings" verwendet werden können:

  • ST_StartPoint – Gibt den ersten Punkt für den angegebenen "ST_LineString" zurück.
  • ST_EndPoint – Gibt den letzten Punkt für einen "ST_LineString" zurück.
  • ST_PointN – Verwendet einen "ST_LineString" und einen Index zum n-ten Punkt und gibt diesen Punkt zurück.
  • ST_Length – Gibt die Länge eines "ST_LineString" als Zahl mit doppelter Genauigkeit zurück.
  • ST_NumPoints – Bewertet einen "ST_LineString" und gibt die Anzahl der Punkte in seiner Folge als Ganzzahl zurück.
  • ST_IsRing – Eine Eigenschaftenfunktion, die "1" (TRUE) zurückgibt, wenn es sich beim angegebenen "ST_LineString" um einen Ring handelt. Andernfalls wird "0" (FALSE) zurückgegeben.
  • ST_IsClosed – Eine Eigenschaftenfunktion, die "1" (TRUE) zurückgibt, wenn der angegebene "ST_LineString" geschlossen ist. Andernfalls wird "0" (FALSE) zurückgegeben.

Die folgende Grafik zeigt Beispiele verschiedener "ST_LineString"-Objekte: (1) ist ein einfacher, nicht geschlossener "ST_LineString"; (2) ist ein komplexer, nicht geschlossener "ST_LineString"; (3) ist ein geschlossener, einfacher "ST_LineString", also ein Ring; (4) ist ein geschlossener, komplexer "ST_LineString", aber kein Ring.

Beispiele für "ST_LineStrings"

ST_MultiLineString

Ein ST_MultiLineString ist eine Sammlung mehrerer "ST_LineStrings". "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. Zusätzlich zu den anderen Eigenschaften, die von der übergeordneten Objektklasse "ST_Geometry" übernommen werden, besitzen "ST_MultiLineStrings" eine Länge. Mit "ST_MultiLineStrings" werden nicht zusammenhängende lineare Features wie Flüsse oder Straßennetze definiert.

Die folgende Grafik zeigt Beispiele für "ST_MultiLineStrings": (1) ist ein einfacher "ST_MultiLineString", dessen Grenze die vier Endpunkte seiner zwei "ST_LineString"-Elemente bilden. (2) ist ein einfacher "ST_MultiLineString", weil nur die Endpunkte der "ST_LineString"-Elemente geschnitten werden. Die Grenze bilden zwei Endpunkte, die nicht geschnitten werden. (3) ist ein komplexer "ST_MultiLineString", weil der Innenbereich eines der "ST_LineString"-Elemente geschnitten wird. Die Grenze dieses "ST_MultiLineString" bilden die drei nicht geschnittenen Endpunkte. (4) ist ein einfacher, nicht geschlossener "ST_MultiLineString". Er ist nicht geschlossen, weil seine "ST_LineStrings" nicht geschlossen sind. Es handelt sich um eine einfache Geometrie, weil der Innenbereich keines der "ST_LineStrings" geschnitten wird. (5) ist ein einzelner, einfacher, geschlossener "ST_MultiLineString". Er ist geschlossen, weil alle zugehörigen Elemente geschlossen sind. Es handelt sich um eine einfache Geometrie, weil der Innenbereich keines der zugehörigen Elemente geschnitten wird.

Beispiele für "ST_MultiLineStrings"

Zu den Funktionen, die für "ST_MultiLineStrings" verwendet werden können, gehören "ST_Length" und "ST_IsClosed".

Die Funktion ST_Length wertet einen "ST_MultiLineString" aus und gibt die kumulative Länge aller zugehörigen "ST_LineString"-Elemente als Zahl mit doppelter Genauigkeit aus.

Die Eigenschaftenfunktion ST_IsClosed gibt "1" (TRUE) zurück, wenn der angegebene "ST_MultiLineString" geschlossen ist. Andernfalls wird "0" (FALSE) zurückgegeben.

ST_Polygon

Ein ST_Polygon ist 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_Polygons" besitzen stets eine einfache Geometrie. "ST_Polygons" definieren Features mit einer räumlichen Ausdehnung wie Flurstücke, Gewässer und Gerichtsbezirke.

In der folgenden Grafik sind Beispiele von "ST_Polygon"-Objekten zu sehen: (1) ist ein "ST_Polygon", dessen Grenze durch einen äußerer Ring definiert ist. (2) ist ein "ST_Polygon", dessen Grenze durch einen äußeren Ring und zwei innere Ringe definiert ist. Die Fläche innerhalb der inneren Ringe ist Teil des "ST_Polygon"-Außenbereichs. (3) ist ein zulässiges "ST_Polygon", weil sich die Ringe an einem einzelnen Tangentenpunkt schneiden.

Beispiele für "ST_Polygon"

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. Zusätzlich zu den anderen Eigenschaften, die von der übergeordneten Objektklasse "ST_Geometry" übernommen werden, besitzen "ST_Polygons" eine Fläche.

Nachfolgend sind einige Funktionen genannt, die für ein "ST_Polygon" verwendet werden können:

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

ST_MultiPolygon

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. Zusätzlich zu den anderen Eigenschaften, die von der übergeordneten Objektklasse "ST_Geometry" übernommen werden, besitzen "ST_MultiPolygons" eine Fläche. Mit "ST_MultiPolygons" werden Features wie Waldstrata und nicht durchgängige Flurstücke (z. B. Inselketten im Pazifik) definiert.

Die folgende Grafik zeigt Beispiele von "ST_MultiPolygon": (1) ist ein "ST_MultiPolygon" mit zwei "ST_Polygon"-Elementen. Die Grenze wird durch die zwei äußeren Ringe und die drei inneren Ringe definiert. (2) ist ein "ST_MultiPolygon" mit zwei "ST_Polygon"-Elementen. Die Grenze wird durch die zwei äußeren Ringe und die zwei inneren Ringe definiert. Die zwei "ST_Polygon"-Elemente schneiden sich an einem Tangentenpunkt.

Beispiele für "ST_MultiPolygon"

Zu den Funktionen, die für "ST_MultiPolygons" verwendet werden können, gehören "ST_Area", "ST_Centroid" und "ST_PointOnSurface".

Die Funktion ST_Area gibt eine Zahl mit doppelter Genauigkeit zurück, die den kumulativen "ST_Area"-Werten der "ST_Polygon"-Elemente eines "ST_MultiPolygon" entspricht.

Die Funktion ST_Centroid gibt einen "ST_Point" zurück, der die Mitte eines "ST_MultiPolygon"-Envelopes darstellt.

Die Funktion ST_PointOnSurface wertet ein "ST_MultiPolygon" aus und gibt einen "ST_Point" zurück, der sich mit Sicherheit normal zur Oberfläche eines der zugehörigen "ST_Polygon"-Elemente verhält.

Anzahl einfacher Geometrien in einer Multipart-Geometrie

Multipart-Geometrien setzen sich aus mehreren einzelnen Geometrien zusammen.

Sie können ermitteln, wie viele einzelne Geometrien in einer Multipart-Geometrie wie "ST_MultiPoint", "ST_MultiLineString" und "ST_MultiPolygon" enthalten sind. Verwenden Sie dazu die Eigenschaftenfunktion ST_NumGeometries. Diese Funktion gibt die Anzahl der einzelnen Elemente in einer Sammlung von Geometrien zurück.

Mit der Funktion ST_GeometryN können Sie ermitteln, welche Geometrie in der Multipart-Geometrie an Position N vorhanden ist. Dabei ist N eine Zahl, die Sie mit der Funktion angeben. Beispiel: Wenn Sie den dritten Punkt einer Multipoint-Geometrie zurückgeben möchten, geben Sie bei der Ausführung der Funktion den Wert "3" an.

Innenbereich, Außenbereich oder Grenze

Alle Geometrien belegen eine Position im Raum, der durch ihren Innenbereich, ihre Grenze und ihren Außenbereich definiert ist. Der Außenbereich einer Geometrie ist der Raum, der nicht von der Geometrie in Anspruch genommen wird. Der Innenbereich ist der Raum, der von der Geometrie in Anspruch genommen wird. Die Grenze einer Geometrie ist der Bereich zwischen dem Innen- und Außenbereich. Die Eigenschaften für den Innen- und Außenbereich werden vom Subtype direkt übernommen, die Eigenschaft für die Grenze variiert jedoch.

Mit der Funktion "ST_Boundary" ermitteln Sie die Grenze des "ST_Geometry"-Quellobjekts. Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Boundary.

Einfach oder komplex

Einige Subtypes von "ST_Geometry" sind grundsätzlich einfach, wie "ST_Points" oder "ST_Polygons". Die Subtypes "ST_LineStrings", "ST_MultiPoints" und "ST_MultiLineStrings" können jedoch einfach oder komplex sein. Sie sind einfach, wenn sie allen ihnen auferlegten Topologieregeln folgen, bzw. komplex, wenn sie ihnen nicht folgen.

Nachfolgend werden einige Topologieregeln beschrieben:

Mit der Eigenschaftenfunktion "ST_IsSimple" wird ermittelt, ob ein "ST_LineString", "ST_MultiPoint" oder "ST_MultiLineString" einfach oder komplex ist. "ST_IsSimple" gibt für eine "ST_Geometry" den Wert "1" (TRUE) zurück, wenn die "ST_Geometry" einfach ist. Andernfalls wird der Wert "0" (FALSE) zurückgegeben. Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_IsSimple.

Leer oder nicht leer

Eine Geometrie ist leer, wenn sie keine Punkte besitzt. Bei einer leeren Geometrie sind Envelope, Grenze, Innenbereich und Außenbereich null. Eine leere Geometrie ist grundsätzlich einfach. Leere Linestrings und Multilinestrings besitzen die Länge 0. Leere Polygone und Multipolygone besitzen eine 0-Fläche.

Mit der Eigenschaftenfunktion "ST_IsEmpty" kann ermittelt werden, ob eine Geometrie leer ist. Diese Funktion analysiert eine "ST_Geometry" und gibt den Wert "1" (TRUE) zurück, wenn die "ST_Geometry" leer ist. Andernfalls wird der Wert "0" (FALSE) zurückgegeben. Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_IsEmpty.

"IsClosed" und "IsRing"

Linestring-Geometrien können geschlossen und/oder Ringe sein. Linestrings können geschlossen sein, ohne gleichzeitig Ringe zu sein. Mit der Eigenschaftenfunktion "ST_IsClosed" können Sie ermitteln, ob ein Linestring geschlossen ist. TRUE wird zurückgegeben, wenn sich Start- und Endpunkt des Linestrings schneiden. Ringe sind geschlossene Linestrings mit einfacher Geometrie. Mit der Eigenschaftenfunktion "ST_IsRing" kann getestet werden, ob ein Linestring wirklich ein Ring ist. TRUE wird zurückgegeben, wenn der Linestring geschlossen ist und eine einfache Geometrie besitzt.

Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_IsClosed und ST_IsRing.

Envelope

Jede Geometrie besitzt einen Envelope. Der Envelope einer Geometrie ist die umgebende Geometrie, die durch die minimalen und maximalen XY-Koordinaten gebildet wird. Da bei Punktgeometrien die minimalen und maximalen XY-Koordinaten identisch sind, wird ein Rechteck oder Envelope um diese Koordinaten gebildet. Bei Liniengeometrien stellen die Endpunkte der Linie zwei Seiten des Envelopes dar. Die anderen zwei Seiten befinden sich unmittelbar über und unter der Linie.

Die Funktion "ST_Envelope" gibt für eine "ST_Geometry" eine "ST_Geometry" zurück, die den Envelope des "ST_Geometry"-Quellobjekts darstellt. Informationen zur Syntax und ein Beispiel zur Verwendung dieser Funktion finden Sie unter ST_Envelope.

Um die einzelnen minimalen und maximalen XY-Koordinaten einer Geometrie zu ermitteln, verwenden Sie die Funktionen ST_MinX, ST_MinY, ST_MaxX und ST_MaxY.

Raumbezugssystem

Das Raumbezugssystem gibt die Koordinatentransformationsmatrix für jede Geometrie an. Diese besteht aus Koordinatensystem, Auflösung und Toleranz.

Alle Raumbezugssysteme für die Geodatabase werden in der Tabelle "spatial_references" gespeichert.

Es gibt zwei Funktionen, mit denen Informationen zu Raumbezugssystemen von Geometrien abgerufen werden können: "ST_SRID" und "ST_EqualSRS".

Die Funktion "ST_SRID" gibt für eine "ST_Geometry" die Raumbezugskennung als Ganzzahl zurück.

Die Funktion "ST_EqualSRS" ermittelt, ob die Raumbezugssysteme von zwei verschiedenen Feature-Classes identisch sind.

Informationen zur Syntax und Beispiele zur Verwendung dieser Funktionen finden Sie unter ST_SRID und ST_EqualSRS.

Weitere Informationen zu Raumbezügen finden Sie unter Eigenschaften eines Raumbezugs. Bei Verwendung eines DBMS von IBM finden Sie weitere Informationen im IBM DB2 Spatial Extender and geodetic Extender User's Guide and Reference bzw. im IBM Informix Spatial DataBlade Module User's Guide.

Größe der Features (nur PostgreSQL)

Die Features (räumliche Datensätze in einer Tabelle) beanspruchen eine bestimmte Menge an Speicherplatz in Byte. Mit der Funktion ST_GeoSize können Sie ermitteln, wie groß die einzelnen Features in einer Tabelle sind.

Verwandte Themen


3/6/2012