Zerlegt eine Geometrie in ihre Komponenten der untersten Ebene.
st_geometry_dump( geometry [, "options" ] )
geometry Der ST_Geometry-Wert der zu zerlegenden Geometrie.
"options" Eine optionale VARCHAR(255)-Zeichenfolge aus durch Semikola getrennten Parametern und Werten, die Sie verwenden können, um die Ausgabe der Prozedur zu konfigurieren. Der Standardwert ist NULL.
Die folgende Tabelle enthält eine Liste der Parameter, die Sie angeben können:
Parameter | Standardwert | Zulässige Werte | Beschreibung |
---|---|---|---|
Format | Original | Original, Internal oder Mixed | Das Format, in dem die Geometrie zurückgegeben werden soll. Wenn Sie "Original" angeben, wird die Geometrie in ihrem ursprünglichen Format zurückgegeben. Wenn Sie "Internal" angeben, wird die Geometrie in ihrem normalisierten Format zurückgegeben. Wenn Sie "Mixed" angeben, werden alle verfügbaren gespeicherten Formate zurückgegeben, eine Zeile pro Format. |
ExpandPoints | Yes | Yes, No | Standardmäßig gibt die st_geometry_dump-Systemprozedur beim Zerlegen einer Geometrie mit Punkten (wie z.B. ST_LineString oder ST_MultiPoint) die Punkte in separaten Zeilen aus. Setzen Sie ExpandPoints auf "No", wenn Sie nicht möchten, dass diese zusätzlichen Zeilen generiert werden. |
MaxDepth | -1 | -1, eine beliebige Zahl größer oder gleich Null | Standardmäßig fährt die st_geometry_dump-Systemprozedur mit dem Zerlegen einer Objekthierarchie fort, bis sie die Blattobjekte erreicht. Der MaxDepth-Parameter kann gesetzt werden, um die Anzahl der Ebenen in der Hierarchie zu begrenzen, auf denen die Geometrie zerlegt wird. Bei einem Wert von 0 wird nur die Stammgeometrie zurückgegeben. Bei einem Wert von 1 werden die Geometrie und die ihr direkt untergeordneten Objekte zurückgegeben usw. |
SetGeom | Yes | Yes, No | Die st_geometry_dump-Systemprozedur gibt eine Spalte zurück mit der ST_Geometry, die einem Objekt in der ursprünglichen Hierarchie zugeordnet ist. Wenn diese Spalte nicht benötigt wird, kann der Parameter SetGeom auf "No" gesetzt werden, um die Ausführungszeit und die Ausgabegröße der Prozedur zu verringern. |
Validate | Basic | None, Basic, Full | Standardmäßig wendet die st_geometry_dump-Systemprozedur die Validierungsregeln an, die der Datenbankserver beim Laden von Geometrien verwendet, und setzt die Spalte "Valid" der Ergebnismenge auf 1, wenn das Objekt in der Zeile diesen Regeln entspricht. Der Validate-Parameter kann auf "None"gesetzt werden, um diese Prüfung zu deaktivieren, oder auf "Full", um die zusätzlichen Prüfungen durch die ST_IsValid-Methode anzuwenden. Eine vollständige Überprüfung nimmt mehr Zeit in Anspruch. |
In der folgenden Tabelle werden die von der st_geometry_dump-Prozedur zurückgegebenen Ergebnisse beschrieben:
Spalte | Datentyp | Beschreibung |
---|---|---|
id | UNSIGNED BIGINT | Eine eindeutige ID für diese Zeile in den Ergebnissen. |
parent_id | UNSIGNED BIGINT | Die ID des diesem Objekt direkt übergeordneten Objekts. |
depth | INTEGER | Die Tiefe vom Stammobjekt bis zu dem dieser Zeile zugeordneten Objekt. |
format | VARCHAR(128) | Gibt an, ob es sich bei der Geometrie um die ursprüngliche Darstellung ("Original") oder die normalisierte Darstellung ("Internal") handelt. |
valid | BIT | Gibt an, ob die Geometrie entsprechend der Validate-Option festgelegten Prüfungsstufe gültig ist (1). |
geom_type | VARCHAR(128) | Der Geometrietyp, wie von ST_GeometryType zurückgegeben. |
geom | ST_Geometry | Die Geometriespezifikation. Wenn der SetGeom-Parameter auf "No" gesetzt ist, wird die Geometriespezifikation nicht in der Ergebnismenge zurückgegeben. |
xmin | DOUBLE | Der minimale x-Wert für die Geometrie. |
xmax | DOUBLE | Der maximale x-Wert für die Geometrie. |
ymin | DOUBLE | Der minimale y-Wert für die Geometrie. |
ymax | DOUBLE | Der maximale y-Wert für die Geometrie. |
zmin | DOUBLE | Der minimale z-Wert für die Geometrie. |
zmax | DOUBLE | Die maximale z-Wert für die Geometrie. |
mmin | DOUBLE | Der minimale m-Wert für die Geometrie. |
mmax | DOUBLE | Die maximale m-Wert für die Geometrie. |
details | LONG VARCHAR | Weitere Informationen zur Geometrie, einschließlich zusätzlicher Angaben dazu, warum das Objekt nicht gültig ist. |
Die st_geometry_dump-Systemprozedur zerlegt eine Geometriehierarchie in eine Ergebnismenge mit einer Zeile für jedes der Objekte in der Hierarchie (einschließlich des Stammobjekts). Jede Geometrie in der Hierarchie kann validiert werden, um festzustellen, ob sie gültig ist und ggf. warum sie ungültig ist.
Einige Funktionen der st_geometry_dump-Systemprozedur können mithilfe von typspezifischen Methoden wie ST_GeometryN oder ST_PointN zugeordnet werden.
Die st_geometry_dump-Systemprozedur kann verwendet werden, um ungültige Geometrien zu korrigieren.
Keine
Keine
Im folgenden Beispiel wird das Polygon, 'Polygon ((0 0, 3 0, 3 3, 0 3, 0 0))'
, in seine Komponentengeometrien zerlegt:
SELECT * FROM st_geometry_dump( 'Polygon ((0 0, 3 0, 3 3, 0 3, 0 0))', 'SetGeom=No' ); |
id | parent_id | depth | format | valid | geom_type | geom | xmin | xmax | ymin | ymax | ... |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | Internal | 1 | ST_Polygon | Polygon ((0 0, 3 0, 3 3, 0 3, 0 0)) |
0 | 3 | 0 | 3 | ... |
2 | 1 | 1 | Internal | 1 | ST_LineString | LineString (0 0, 3 0, 3 3, 0 3, 0 0) |
0 | 3 | 0 | 3 | ... |
3 | 2 | 2 | Internal | 1 | ST_Point | Point (0 0) |
0 | 0 | 0 | 0 | ... |
4 | 2 | 2 | Internal | 1 | ST_Point | Point (3 0) |
3 | 3 | 0 | 0 | ... |
5 | 2 | 2 | Internal | 1 | ST_Point | Point (3 3) |
3 | 3 | 3 | 3 | ... |
6 | 2 | 2 | Internal | 1 | ST_Point | Point (0 3) |
0 | 0 | 3 | 3 | ... |
7 | 2 | 2 | Internal | 1 | ST_Point | Point (0 0) |
0 | 0 | 0 | 0 | ... |
Das folgende Beispiel zeigt, wie die st_geometry_dump-Systemprozedur verwendet werden kann, um die ungültigen Punkte in einer Geometrie zu finden. In diesem Beispiel enthält die Linienfolge einen Punkt mit Länge 1200. Deshalb werden sowohl der Punkt als auch die Linienfolge in den Ergebnissen als ungültig gemeldet (valid=0).
SET TEMPORARY OPTION st_geometry_on_invalid='Ignore'; CREATE OR REPLACE VARIABLE @geo ST_Geometry; SET @geo = new ST_LineString( 'LineString(1200 2, 80 10)', 4326 ); SELECT * FROM st_geometry_dump( @geo, 'SetGeom=No' ); |
id | parent_id | depth | format | valid | geom_type | geom | xmin | xmax | ymin | ymax | ... | details |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | Original | 0 | ST_LineString | (NULL) | 80 | 1,200 | 2 | 10 | ... | Value 1200.000000 out of range for coordinate longitude (SRS allows -180.000000 to 180.000000). |
2 | 1 | 1 | Original | 0 | ST_LineString | (NULL) | 1,200 | 1,200 | 2 | 2 | ... | Value 1200.000000 out of range for coordinate longitude (SRS allows -180.000000 to 180.000000). |
3 | 1 | 1 | Original | 1 | ST_Point | (NULL) | 80 | 80 | 10 | 10 | ... |
Wenn ungültige Daten identifiziert wurden, kann die st_geometry_dump-Systemprozedur mit anderen als räumlichen Methoden verwendet werden, um die ungültigen Elemente zu korrigieren und eine gültige Geometrie zusammenzustellen. Das folgende Beispiel zeigt, wie ein ungültiger Punkt mit Länge 1200 in Länge 120.0 korrigiert werden kann:
SET TEMPORARY OPTION st_geometry_on_invalid='Ignore'; CREATE OR REPLACE VARIABLE @geo ST_Geometry; SET @geo = new ST_LineString( 'LineString(1200 2, 80 10)', 4326 ); SELECT ST_LineString::ST_LineStringAggr( new ST_Point( IF xmax = 1200 then 120.0 ELSE xmax ENDIF, ymax, 4326 ) ORDER BY id ) FROM st_geometry_dump( @geo ) WHERE geom_type='ST_Point'; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |