GoogleSQL for BigQuery unterstützt geografische Funktionen.
Geografische Funktionen werden auf GoogleSQL-GEOGRAPHY
-Werte angewendet oder generieren sie. Die Signatur der meisten geografischen Funktionen beginnt mit ST_
. GoogleSQL unterstützt die folgenden Funktionen, mit denen geografische Daten analysiert, räumliche Beziehungen zwischen geografischen Merkmalen bestimmt und GEOGRAPHY
s erstellt oder bearbeitet werden können.
Alle geografischen Funktionen von GoogleSQL geben NULL
zurück, wenn eines der Eingabeargumente NULL
ist.
Kategorien
Die geografischen Funktionen werden auf der Grundlage ihres Verhaltens in folgende Kategorien eingeteilt:
Kategorie | Funktionen | Beschreibung |
Konstruktoren |
ST_GEOGPOINT ST_MAKELINE ST_MAKEPOLYGON ST_MAKEPOLYGONORIENTED
|
Funktionen, die neue geografische Werte aus Koordinaten oder vorhandenen Regionen erstellen. |
Parser |
ST_GEOGFROM ST_GEOGFROMGEOJSON ST_GEOGFROMTEXT ST_GEOGFROMWKB ST_GEOGPOINTFROMGEOHASH |
Funktionen, die Regionen aus einem externen Format wie WKT und GeoJSON erstellen. |
Formatierer |
ST_ASBINARY ST_ASGEOJSON ST_ASTEXT ST_GEOHASH
|
Funktionen, die Regionen in ein externes Format wie WKT exportieren. |
Transformationen |
ST_BOUNDARY ST_BUFFER ST_BUFFERWITHTOLERANCE ST_CENTROID ST_CENTROID_AGG (Aggregiert)ST_CLOSESTPOINT ST_CONVEXHULL ST_DIFFERENCE ST_EXTERIORRING ST_INTERIORRINGS ST_INTERSECTION ST_SIMPLIFY ST_SNAPTOGRID ST_UNION ST_UNION_AGG (Aggregiert) |
Funktionen, die basierend auf Eingaben eine neue Region generieren. |
Zugriffsfunktionen |
ST_DIMENSION ST_DUMP ST_ENDPOINT ST_GEOMETRYTYPE ST_ISCLOSED ST_ISCOLLECTION ST_ISEMPTY ST_ISRING ST_NPOINTS ST_NUMGEOMETRIES ST_NUMPOINTS ST_POINTN ST_STARTPOINT ST_X ST_Y |
Funktionen, die Zugriff auf Attribute einer Region ohne Nebeneffekte ermöglichen. |
Prädikate |
ST_CONTAINS ST_COVEREDBY ST_COVERS ST_DISJOINT ST_DWITHIN ST_EQUALS ST_INTERSECTS ST_INTERSECTSBOX ST_TOUCHES ST_WITHIN |
Funktionen, die TRUE oder FALSE für eine bestimmte räumliche Beziehung zwischen zwei Regionen oder einigen Attributen einer Region zurückgeben. Diese Funktionen werden häufig in Filterklauseln verwendet.
|
Messung |
ST_ANGLE ST_AREA ST_AZIMUTH ST_BOUNDINGBOX ST_DISTANCE ST_EXTENT (Aggregate)ST_LENGTH ST_MAXDISTANCE ST_PERIMETER |
Funktionen, die Messwerte einer oder mehrerer Regionen berechnen. |
Clustering |
ST_CLUSTERDBSCAN
|
Funktionen, die Clustering für Regionen ausführen. |
S2-Funktionen |
S2_CELLIDFROMPOINT S2_COVERINGCELLIDS |
Funktionen für die Arbeit mit S2-Zellabdeckungen von GEOGRAPHY. |
S2_CELLIDFROMPOINT
S2_CELLIDFROMPOINT(point_geography[, level => cell_level])
Beschreibung
Gibt die S2-Zellen-ID zurück, die einen Punkt GEOGRAPHY
abdeckt.
- Der optionale
INT64
-Parameterlevel
gibt die S2-Zellebene für die zurückgegebene Zelle an. Die Benennung dieses Arguments ist optional.
Dies ist eine erweiterte Funktionalität für die Interoperabilität mit Systemen, die die S2 Geometry-Bibliothek verwenden.
Einschränkungen
- Gibt die Zellen-ID als
INT64
-Bit mit Vorzeichen zurück, das der vorzeichenlosen 64-Bit-Ganzzahldarstellung entspricht. - Kann negative Zellen-IDs zurückgeben.
- Gültige S2-Zellenebenen sind 0 bis 30.
level
ist standardmäßig 30, wenn nicht explizit angegeben.- Die Funktion unterstützt nur eine Einzelpunkt-GEOGRAPHY. Verwenden Sie das Präfix
SAFE
, wenn die Eingabe ein Multipunkt, ein LineString, ein Polygon oder eine leereGEOGRAPHY
sein kann. - Verwenden Sie S2_COVERINGCELLIDS, um die Abdeckung einer komplexen
GEOGRAPHY
zu berechnen.
Rückgabetyp
INT64
Beispiel
WITH data AS (
SELECT 1 AS id, ST_GEOGPOINT(-122, 47) AS geo
UNION ALL
-- empty geography is not supported
SELECT 2 AS id, ST_GEOGFROMTEXT('POINT EMPTY') AS geo
UNION ALL
-- only points are supported
SELECT 3 AS id, ST_GEOGFROMTEXT('LINESTRING(1 2, 3 4)') AS geo
)
SELECT id,
SAFE.S2_CELLIDFROMPOINT(geo) cell30,
SAFE.S2_CELLIDFROMPOINT(geo, level => 10) cell10
FROM data;
+----+---------------------+---------------------+
| id | cell30 | cell10 |
+----+---------------------+---------------------+
| 1 | 6093613931972369317 | 6093613287902019584 |
| 2 | NULL | NULL |
| 3 | NULL | NULL |
+----+---------------------+---------------------+
S2_COVERINGCELLIDS
S2_COVERINGCELLIDS(
geography
[, min_level => cell_level]
[, max_level => cell_level]
[, max_cells => max_cells]
[, buffer => buffer])
Beschreibung
Gibt ein Array von S2-Zellen-IDs zurück, die die Eingabe-GEOGRAPHY
abdeckt. Die Funktion gibt höchstens max_cells
Zellen zurück. Die optionalen Argumente min_level
und max_level
geben Mindest- und Höchstwerte für die zurückgegebenen S2-Zellen an. Die Arraygröße wird durch das optionale Argument max_cells
begrenzt. Das optionale Argument buffer
gibt einen Pufferfaktor in Metern an. Die zu erfassende Region wird von der Ausdehnung der Eingabegeografie um diesen Betrag erweitert.
Dies ist eine erweiterte Funktionalität für die Interoperabilität mit Systemen, die die S2 Geometry-Bibliothek verwenden.
Einschränkungen
- Gibt die Zellen-ID als
INT64
-Bit mit Vorzeichen zurück, das der vorzeichenlosen 64-Bit-Ganzzahldarstellung entspricht. - Kann negative Zellen-IDs zurückgeben.
- Gültige S2-Zellenebenen sind 0 bis 30.
max_cells
ist standardmäßig 8, wenn nicht explizit angegeben.buffer
darf nicht negativ sein. Standardmäßig wird 0,0 Meter verwendet, wenn nicht explizit angegeben.
Rückgabetyp
ARRAY<INT64>
Beispiel
WITH data AS (
SELECT 1 AS id, ST_GEOGPOINT(-122, 47) AS geo
UNION ALL
SELECT 2 AS id, ST_GEOGFROMTEXT('POINT EMPTY') AS geo
UNION ALL
SELECT 3 AS id, ST_GEOGFROMTEXT('LINESTRING(-122.12 47.67, -122.19 47.69)') AS geo
)
SELECT id, S2_COVERINGCELLIDS(geo, min_level => 12) cells
FROM data;
+----+--------------------------------------------------------------------------------------+
| id | cells |
+----+--------------------------------------------------------------------------------------+
| 1 | [6093613931972369317] |
| 2 | [] |
| 3 | [6093384954555662336, 6093390709811838976, 6093390735581642752, 6093390740145045504, |
| | 6093390791416217600, 6093390812891054080, 6093390817187069952, 6093496378892222464] |
+----+--------------------------------------------------------------------------------------+
ST_ANGLE
ST_ANGLE(point_geography_1, point_geography_2, point_geography_3)
Beschreibung
Verwendet Drei-Punkt-Werte für GEOGRAPHY
, die zwei sich überschneidende Linien darstellen.
Gibt den Winkel zwischen diesen Linien zurück. Punkt 2 und Punkt 1 stellen die erste Linie dar und Punkt 2 und Punkt 3 stellen die zweite Linie dar. Der Winkel zwischen diesen Linien wird im Bogenmaß angegeben und liegt im Bereich [0, 2pi)
. Der Winkel wird von der ersten Linie bis zur zweiten Linie im Uhrzeigersinn gemessen.
ST_ANGLE
hat folgende Sonderfälle:
- Wenn die Punkte 2 und 3 identisch sind, wird
NULL
zurückgegeben. - Wenn die Punkte 2 und 1 identisch sind, wird
NULL
zurückgegeben. - Wenn die Punkte 2 und 3 genau entgegengesetzt sind, wird
NULL
zurückgegeben. - Wenn die Punkte 2 und 1 genau entgegengesetzt sind, wird
NULL
zurückgegeben. - Wenn eine der Eingabe-Geografien keine einzelnen Punkte oder leer sind wird ein Fehler ausgegeben.
Rückgabetyp
FLOAT64
Beispiel
WITH geos AS (
SELECT 1 id, ST_GEOGPOINT(1, 0) geo1, ST_GEOGPOINT(0, 0) geo2, ST_GEOGPOINT(0, 1) geo3 UNION ALL
SELECT 2 id, ST_GEOGPOINT(0, 0), ST_GEOGPOINT(1, 0), ST_GEOGPOINT(0, 1) UNION ALL
SELECT 3 id, ST_GEOGPOINT(1, 0), ST_GEOGPOINT(0, 0), ST_GEOGPOINT(1, 0) UNION ALL
SELECT 4 id, ST_GEOGPOINT(1, 0) geo1, ST_GEOGPOINT(0, 0) geo2, ST_GEOGPOINT(0, 0) geo3 UNION ALL
SELECT 5 id, ST_GEOGPOINT(0, 0), ST_GEOGPOINT(-30, 0), ST_GEOGPOINT(150, 0) UNION ALL
SELECT 6 id, ST_GEOGPOINT(0, 0), NULL, NULL UNION ALL
SELECT 7 id, NULL, ST_GEOGPOINT(0, 0), NULL UNION ALL
SELECT 8 id, NULL, NULL, ST_GEOGPOINT(0, 0))
SELECT ST_ANGLE(geo1,geo2,geo3) AS angle FROM geos ORDER BY id;
+---------------------+
| angle |
+---------------------+
| 4.71238898038469 |
| 0.78547432161873854 |
| 0 |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+---------------------+
ST_AREA
ST_AREA(geography_expression[, use_spheroid])
Beschreibung
Gibt die Fläche in Quadratmetern zurück, die von den Polygonen in der Eingabe-GEOGRAPHY
abgedeckt wird.
Wenn geography_expression
ein Punkt oder eine Linie ist, wird null zurückgegeben. Ist geography_expression
eine Sammlung, wird die Fläche der Polygone in der Sammlung zurückgegeben. Enthält die Sammlung keine Polygone, wird null zurückgegeben.
Der optionale Parameter use_spheroid
bestimmt, wie diese Funktion die Entfernung misst. Wenn use_spheroid
auf FALSE
gesetzt ist, misst die Funktion die Entfernung auf der Oberfläche einer perfekten Kugel.
Der Parameter use_spheroid
unterstützt derzeit nur den Wert FALSE
. FALSE
ist auch der Standardwert von use_spheroid
.
Rückgabetyp
FLOAT64
ST_ASBINARY
ST_ASBINARY(geography_expression)
Beschreibung
Gibt die WKB-Darstellung einer Eingabe-GEOGRAPHY
zurück.
Unter ST_GEOGFROMWKB
erfahren Sie, wie Sie eine GEOGRAPHY
aus WKB erstellen.
Rückgabetyp
BYTES
ST_ASGEOJSON
ST_ASGEOJSON(geography_expression)
Beschreibung
Gibt die RFC 7946-konforme GeoJSON-Darstellung der Eingabe-GEOGRAPHY
zurück.
Eine GEOGRAPHY
von GoogleSQL hat sphärische geodätische Kanten, während ein Geometry
-Objekt im GeoJSON-Format explizit planare Kanten hat.
Zur Umwandlung dieser zwei Arten von Kanten fügt GoogleSQL der Linie bei Bedarf zusätzliche Punkte hinzu, sodass die resultierende Abfolge von Kanten im Umkreis von zehn Metern zur ursprünglichen Kante bleibt.
Unter ST_GEOGFROMGEOJSON
erfahren Sie, wie Sie eine GEOGRAPHY
aus GeoJSON erstellen.
Rückgabetyp
STRING
ST_ASTEXT
ST_ASTEXT(geography_expression)
Beschreibung
Gibt die WKT-Darstellung einer Eingabe-GEOGRAPHY
zurück.
Unter ST_GEOGFROMTEXT
erfahren Sie, wie Sie eine GEOGRAPHY
aus WKT erstellen.
Rückgabetyp
STRING
ST_AZIMUTH
ST_AZIMUTH(point_geography_1, point_geography_2)
Beschreibung
Nimmt zwei Punkt-GEOGRAPHY
-Werte an und gibt den Azimut des Liniensegment zurück, das durch die Punkte 1 und 2 gebildet wird. Der Azimut ist der Winkel im Bogenmaß, der zwischen der Linie von Punkt 1 gegenüber dem Liniensegment von Punkt 1 zum Punkt 2 gemessen wird.
Der positive Winkel wird auf der Oberfläche einer Sphäre im Uhrzeigersinn gemessen. Beispiel: der Azimut für ein Liniensegment:
- Nordwärts gerichtet ist
0
- Ostwärts gerichtet ist
PI/2
- Südwärts gerichtet ist
PI
- Westwärts gerichtet ist
3PI/2
ST_AZIMUTH
hat folgende Sonderfälle:
- Wenn beide Eingabepunkte gleich sind, wird
NULL
zurückgegeben. - Wenn die beiden Eingabepunkte genau entgegengesetzt sind, wird
NULL
zurückgegeben. - Wenn eine der Eingabegeografien keine einzelnen Punkte oder leer sind, wird ein Fehler ausgegeben.
Rückgabetyp
FLOAT64
Beispiel
WITH geos AS (
SELECT 1 id, ST_GEOGPOINT(1, 0) AS geo1, ST_GEOGPOINT(0, 0) AS geo2 UNION ALL
SELECT 2, ST_GEOGPOINT(0, 0), ST_GEOGPOINT(1, 0) UNION ALL
SELECT 3, ST_GEOGPOINT(0, 0), ST_GEOGPOINT(0, 1) UNION ALL
-- identical
SELECT 4, ST_GEOGPOINT(0, 0), ST_GEOGPOINT(0, 0) UNION ALL
-- antipode
SELECT 5, ST_GEOGPOINT(-30, 0), ST_GEOGPOINT(150, 0) UNION ALL
-- nulls
SELECT 6, ST_GEOGPOINT(0, 0), NULL UNION ALL
SELECT 7, NULL, ST_GEOGPOINT(0, 0))
SELECT ST_AZIMUTH(geo1, geo2) AS azimuth FROM geos ORDER BY id;
+--------------------+
| azimuth |
+--------------------+
| 4.71238898038469 |
| 1.5707963267948966 |
| 0 |
| NULL |
| NULL |
| NULL |
| NULL |
+--------------------+
ST_BOUNDARY
ST_BOUNDARY(geography_expression)
Beschreibung
Gibt eine einzelne GEOGRAPHY
zurück, die die Vereinigung der Grenzen aller Komponenten in der jeweiligen Eingabe-GEOGRAPHY
enthält.
Die Grenze der einzelnen Komponenten einer GEOGRAPHY
ist so definiert:
- Die Grenze eines Punkts ist leer.
- Die Grenze eines Linienzugs besteht aus den Endpunkten des Linienzugs.
- Die Grenze eines Polygons besteht aus den Linienzügen, die die Polygonhülle und die einzelnen Löcher des Polygons bilden.
Rückgabetyp
GEOGRAPHY
ST_BOUNDINGBOX
ST_BOUNDINGBOX(geography_expression)
Beschreibung
Gibt ein STRUCT
zurück, das den Begrenzungsrahmen für die angegebene Geografie darstellt.
Der Begrenzungsrahmen ist das minimale Rechteck, das die Geografie einschließt. Die Kanten des Rechtecks folgen konstanten Längen- und Breitengradlinien.
Vorsichtsmaßnahmen:
- Gibt
NULL
zurück, wenn die EingabeNULL
oder eine leere Geografie ist. - Der Begrenzungsrahmen kann den Antimeridian kreuzen, wenn dadurch ein kleineres Rechteck möglich ist. In diesem Fall liegt eine der Längsbegrenzungen des Begrenzungsrahmens außerhalb des Bereichs [-180, 180], sodass
xmin
kleiner ist als der östlichste Wertxmax
.
Rückgabetyp
STRUCT<xmin FLOAT64, ymin FLOAT64, xmax FLOAT64, ymax FLOAT64>
.
Teile des Begrenzungsrahmens:
xmin
: Die westlichste konstante Längengradlinie, die das Rechteck umgrenzt.xmax
: Die östlichste konstante Längengradlinie, die das Rechteck umgrenzt.ymin
: Die minimale konstante Breitengradlinie, die das Rechteck umgrenzt.ymax
: Die maximale konstante Breitengradlinie, die das Rechteck begrenzt.
Beispiel
WITH data AS (
SELECT 1 id, ST_GEOGFROMTEXT('POLYGON((-125 48, -124 46, -117 46, -117 49, -125 48))') g
UNION ALL
SELECT 2 id, ST_GEOGFROMTEXT('POLYGON((172 53, -130 55, -141 70, 172 53))') g
UNION ALL
SELECT 3 id, ST_GEOGFROMTEXT('POINT EMPTY') g
UNION ALL
SELECT 4 id, ST_GEOGFROMTEXT('POLYGON((172 53, -141 70, -130 55, 172 53))', oriented => TRUE)
)
SELECT id, ST_BOUNDINGBOX(g) AS box
FROM data
+----+------------------------------------------+
| id | box |
+----+------------------------------------------+
| 1 | {xmin:-125, ymin:46, xmax:-117, ymax:49} |
| 2 | {xmin:172, ymin:53, xmax:230, ymax:70} |
| 3 | NULL |
| 4 | {xmin:-180, ymin:-90, xmax:180, ymax:90} |
+----+------------------------------------------+
Die Aggregatversion von ST_BOUNDINGBOX
finden Sie unter ST_EXTENT
.
ST_BUFFER
ST_BUFFER(
geography,
buffer_radius
[, num_seg_quarter_circle => num_segments]
[, use_spheroid => boolean_expression]
[, endcap => endcap_style]
[, side => line_side])
Beschreibung
Gibt eine GEOGRAPHY
zurück, die den Zwischenspeicher um die Eingabe-GEOGRAPHY
darstellt.
Diese Funktion entspricht ST_BUFFERWITHTOLERANCE
, Sie geben jedoch die Anzahl der Segmente an, anstatt eine Toleranz anzugeben, um zu bestimmen, wie stark die resultierende Geografie vom idealen Zwischenspeicherradius abweichen darf.
geography
: Die Eingabe-GEOGRAPHY
, die mit dem Zwischenspeicherradius eingekreist werden soll.buffer_radius
:DOUBLE
-Wert, der den Radius des Zwischenspeichers um die Eingabegeografie darstellt. Der Radius wird in Metern angegeben. Beachten Sie, dass Polygone beim Zwischenspeichern mit einem negativenbuffer_radius
kontrahieren. Polygonschalen und -löcher, die auf einen Punkt kontrahiert sind, werden verworfen.num_seg_quarter_circle
: (Optional)DOUBLE
, das die Anzahl der Segmente angibt, die zur Annäherung an einen Viertelkreis verwendet werden. Der Standardwert ist8.0
. Die Benennung dieses Arguments ist optional.endcap
: (Optional)STRING
, mit dem Sie einen von zwei endcap-Formaten angeben können:ROUND
undFLAT
. Der Standardwert istROUND
. Diese Option wirkt sich nur auf die endcaps von zwischengespeicherten Linienzügen aus.side
: (Optional)STRING
, mit dem Sie eine von drei Möglichkeiten für die Linien angeben können:BOTH
,LEFT
undRIGHT
. Der Standardwert istBOTH
. Diese Option wirkt sich nur auf die Art und Weise aus, wie Linienzüge zwischengespeichert werden.use_spheroid
: (Optional)BOOL
, der bestimmt, wie diese Funktion die Entfernung misst. Wennuse_spheroid
aufFALSE
gesetzt ist, misst die Funktion die Entfernung auf der Oberfläche einer perfekten Kugel. Der Parameteruse_spheroid
unterstützt derzeit nur den WertFALSE
. Der Standardwert vonuse_spheroid
istFALSE
.
Rückgabetyp
Polygon GEOGRAPHY
Beispiel
Im folgenden Beispiel wird das Ergebnis von ST_BUFFER
für einen Punkt dargestellt. Ein Punkt im Zwischenspeicher ist ungefähr ein Kreis. Bei num_seg_quarter_circle = 2
gibt es zwei Liniensegmente in einem Viertelkreis. Der Kreis im Zwischenspeicher hat daher acht Seiten und ST_NUMPOINTS
gibt neun Eckpunkte zurück. Bei num_seg_quarter_circle = 8
gibt es acht Liniensegmente in einem Viertelkreis, sodass der Kreis im Zwischenspeicher 22 Seiten hat und ST_NUMPOINTS
33 Eckpunkte zurückgibt.
SELECT
-- num_seg_quarter_circle=2
ST_NUMPOINTS(ST_BUFFER(ST_GEOGFROMTEXT('POINT(1 2)'), 50, 2)) AS eight_sides,
-- num_seg_quarter_circle=8, since 8 is the default
ST_NUMPOINTS(ST_BUFFER(ST_GEOGFROMTEXT('POINT(100 2)'), 50)) AS thirty_two_sides;
+-------------+------------------+
| eight_sides | thirty_two_sides |
+-------------+------------------+
| 9 | 33 |
+-------------+------------------+
ST_BUFFERWITHTOLERANCE
ST_BUFFERWITHTOLERANCE(
geography,
buffer_radius,
tolerance_meters => tolernace
[, use_spheroid => boolean_expression]
[, endcap => endcap_style]
[, side => line_side])
Gibt eine GEOGRAPHY
zurück, die den Zwischenspeicher um die Eingabe-GEOGRAPHY
darstellt.
Diese Funktion entspricht ST_BUFFER
, Sie legen jedoch eine Toleranz anstelle von Segmenten fest, um zu bestimmen, wie stark die resultierende Geografie vom idealen Zwischenspeicherradius abweichen kann.
geography
: Die Eingabe-GEOGRAPHY
, die mit dem Zwischenspeicherradius eingekreist werden soll.buffer_radius
:DOUBLE
-Wert, der den Radius des Zwischenspeichers um die Eingabegeografie darstellt. Der Radius wird in Metern angegeben. Beachten Sie, dass Polygone beim Zwischenspeichern mit einem negativenbuffer_radius
kontrahieren. Polygonschalen und -löcher, die auf einen Punkt kontrahiert sind, werden verworfen.tolerance_meters
:DOUBLE
-Wert gibt eine Toleranz in Metern an, mit der die Form approximiert wird. Die Toleranz bestimmt, wie stark ein Polygon vom idealen Radius abweichen kann. Die Benennung dieses Arguments ist optional.endcap
: (Optional)STRING
, mit dem Sie einen von zwei endcap-Formaten angeben können:ROUND
undFLAT
. Der Standardwert istROUND
. Diese Option wirkt sich nur auf die endcaps von zwischengespeicherten Linienzügen aus.side
: (Optional)STRING
, mit dem Sie eine von drei möglichen Linienformaten angeben können:BOTH
,LEFT
undRIGHT
. Der Standardwert istBOTH
. Diese Option wirkt sich nur auf die endcaps von zwischengespeicherten Linienzügen aus.use_spheroid
: (Optional)BOOL
, der bestimmt, wie diese Funktion die Entfernung misst. Wennuse_spheroid
aufFALSE
gesetzt ist, misst die Funktion die Entfernung auf der Oberfläche einer perfekten Kugel. Der Parameteruse_spheroid
unterstützt derzeit nur den WertFALSE
. Der Standardwert vonuse_spheroid
istFALSE
.
Rückgabetyp
Polygon GEOGRAPHY
Beispiel
Das folgende Beispiel zeigt die Ergebnisse von ST_BUFFERWITHTOLERANCE
für einen Punkt bei zwei verschiedenen Werten für die Toleranz, aber mit demselben Zwischenspeicherradius von 100
. Ein Punkt im Zwischenspeicher ist ungefähr ein Kreis. Bei tolerance_meters=25
ist die Toleranz ein hoher Prozentsatz des Zwischenspeicherradius. Daher werden nur fünf Segmente verwendet, um einen Kreis um den Eingabepunkt anzunähern. Bei tolerance_meters=1
ist die Toleranz ein wesentlich kleinerer Prozentsatz des Zwischenspeicherradius. Daher werden vierundzwanzig Kanten verwendet, um einen Kreis um den Eingabepunkt anzunähern.
SELECT
-- tolerance_meters=25, or 25% of the buffer radius.
ST_NumPoints(ST_BUFFERWITHTOLERANCE(ST_GEOGFROMTEXT('POINT(1 2)'), 100, 25)) AS five_sides,
-- tolerance_meters=1, or 1% of the buffer radius.
st_NumPoints(ST_BUFFERWITHTOLERANCE(ST_GEOGFROMTEXT('POINT(100 2)'), 100, 1)) AS twenty_four_sides;
+------------+-------------------+
| five_sides | twenty_four_sides |
+------------+-------------------+
| 6 | 24 |
+------------+-------------------+
ST_CENTROID
ST_CENTROID(geography_expression)
Beschreibung
Gibt den Schwerpunkt der Eingabe-GEOGRAPHY
als Einzelpunkt-GEOGRAPHY
zurück.
Der Schwerpunkt einer GEOGRAPHY
ist der gewichtete Durchschnitt der Schwerpunkte der Komponenten mit der höchsten Dimension in der GEOGRAPHY
. Der Schwerpunkt für Komponenten in den einzelnen Dimensionen wird so definiert:
- Der Schwerpunkt von Punkten ist das arithmetische Mittel der Eingabekoordinaten.
- Der Schwerpunkt von Linienzügen ist der Schwerpunkt aller nach der Länge gewichteten Kanten. Der Schwerpunkt jeder Kante ist der geodätische Mittelpunkt der Kante.
- Der Schwerpunkt eines Polygons ist sein Massenmittelpunkt.
Wenn die Eingabe-GEOGRAPHY
leer ist, wird eine leere GEOGRAPHY
zurückgegeben.
Einschränkungen
Im unwahrscheinlichen Fall, dass der Schwerpunkt einer GEOGRAPHY
nicht durch einen einzelnen Punkt auf der Erdoberfläche definiert werden kann, wird ein deterministischer, aber ansonsten beliebiger Punkt zurückgegeben. Dies kann nur geschehen, wenn sich der Schwerpunkt genau am Mittelpunkt der Erde befindet. Ein Beispiel hierfür wäre der Schwerpunkt von zwei antipodisch gelegenen Punkten. Die Wahrscheinlichkeit, dass dieser Fall eintritt, ist jedoch verschwindend gering.
Rückgabetyp
Punkt GEOGRAPHY
ST_CENTROID_AGG
ST_CENTROID_AGG(geography)
Beschreibung
Berechnet den Schwerpunkt der Gruppe von Eingabe-GEOGRAPHY
s als Einzelpunkt-GEOGRAPHY
.
Der Schwerpunkt der Gruppe von Eingabe-GEOGRAPHY
s ist der gewichtete Durchschnitt der Schwerpunkte der einzelnen GEOGRAPHY
s. Nur die GEOGRAPHY
s mit der höchsten Dimension in der Eingabe fließen in den Schwerpunkt der gesamten Gruppe ein.
Wenn die Eingabe beispielsweise sowohl GEOGRAPHY
s mit Linien als auch GEOGRAPHY
s nur mit Punkten enthält, gibt ST_CENTROID_AGG
den gewichteten Durchschnitt der GEOGRAPHY
s mit Linien zurück, da diese die höchste Dimension haben. In diesem Beispiel werden GEOGRAPHY
s, die nur Punkte enthalten, von ST_CENTROID_AGG
beim Berechnen des aggregierten Schwerpunkts ignoriert.
ST_CENTROID_AGG
ignoriert Eingabe-GEOGRAPHY
s mit NULL
-Werten.
Unter ST_CENTROID
finden Sie die Version von ST_CENTROID_AGG
ohne Aggregation und die Definition des Schwerpunkts für einen einzelnen GEOGRAPHY
-Wert.
Rückgabetyp
Punkt GEOGRAPHY
Beispiel
Die folgenden Abfragen berechnen den aggregierten Schwerpunkt einer Gruppe von GEOGRAPHY
-Werten. Die Eingabe für die erste Abfrage enthält nur Punkte. Daher fließt jeder Wert in den aggregierten Schwerpunkt ein. Beachten Sie außerdem, dass ST_CENTROID_AGG
nicht dem Aufruf von ST_CENTROID
für das Ergebnis von ST_UNION_AGG
entspricht. Im Gegensatz zu ST_CENTROID_AGG
werden Duplikate von der Vereinigung entfernt. Die Eingabe für die zweite Abfrage enthält gemischte Dimensionen, sodass sich nur die Werte mit der höchsten Dimension in der Gruppe (die Linien) auf den aggregierten Schwerpunkt auswirken.
SELECT ST_CENTROID_AGG(points) AS st_centroid_agg,
ST_CENTROID(ST_UNION_AGG(points)) AS centroid_of_union
FROM UNNEST([ST_GEOGPOINT(1, 5),
ST_GEOGPOINT(1, 2),
ST_GEOGPOINT(1, -1),
ST_GEOGPOINT(1, -1)]) points;
+---------------------------+-------------------+
| st_centroid_agg | centroid_of_union |
+---------------------------+-------------------+
| POINT(1 1.24961422620969) | POINT(1 2) |
+---------------------------+-------------------+
SELECT ST_CENTROID_AGG(points) AS st_centroid_agg
FROM UNNEST([ST_GEOGPOINT(50, 26),
ST_GEOGPOINT(34, 33.3),
ST_GEOGFROMTEXT('LINESTRING(0 -1, 0 1)'),
ST_GEOGFROMTEXT('LINESTRING(0 1, 0 3)')]) points;
+-----------------+
| st_centroid_agg |
+-----------------+
| POINT(0 1) |
+-----------------+
ST_CLOSESTPOINT
ST_CLOSESTPOINT(geography_1, geography_2[, use_spheroid])
Beschreibung
Gibt eine GEOGRAPHY
zurück, die einen Punkt in geography_1
mit der kleinstmöglichen Entfernung zu geography_2
enthält. Dies impliziert, dass die Entfernung zwischen dem von ST_CLOSESTPOINT
zurückgegebenen Punkt und geography_2
kleiner oder gleich der Entfernung zwischen jedem anderen Punkt in geography_1
und geography_2
ist.
Wenn eine der Eingabe-GEOGRAPHY
s leer ist, gibt ST_CLOSESTPOINT
den Wert NULL
zurück.
Der optionale Parameter use_spheroid
bestimmt, wie diese Funktion die Entfernung misst. Wenn use_spheroid
auf FALSE
gesetzt ist, misst die Funktion die Entfernung auf der Oberfläche einer perfekten Kugel.
Der Parameter use_spheroid
unterstützt derzeit nur den Wert FALSE
. FALSE
ist auch der Standardwert von use_spheroid
.
Rückgabetyp
Punkt GEOGRAPHY
ST_CLUSTERDBSCAN
ST_CLUSTERDBSCAN(geography_column, epsilon, minimum_geographies)
OVER over_clause
over_clause:
{ named_window | ( [ window_specification ] ) }
window_specification:
[ named_window ]
[ PARTITION BY partition_expression [, ...] ]
[ ORDER BY expression [ { ASC | DESC } ] [, ...] ]
Führt DBSCAN-Clustering für eine Spalte mit Regionen aus. Gibt eine 0-basierte Clusternummer zurück.
Weitere Informationen zur OVER
-Klausel und deren Verwendung finden Sie unter Fensterfunktionsaufrufe.
Eingabeparameter
geography_column
: Eine Spalte vonGEOGRAPHY
s, die geclustert sind.epsilon
: Der Epilson, der den Radius in Metern um einen Kernwert angibt. Nicht negativer Wert fürFLOAT64
.minimum_geographies
: Gibt die Mindestanzahl der Standorte in einem einzelnen Cluster an. Nur eine dichte Eingabe bildet einen Cluster, andernfalls wird sie als Rauschen klassifiziert. Nicht negativer Wert fürINT64
.
Geografische Typen und der DBSCAN-Algorithmus
Der DBSCAN-Algorithmus erkennt hochrangige Cluster von Daten und kennzeichnet Ausreißer in Nebengeräuschbereichen. Mit geography_column
übergebene Geografieregionen werden vom DBSCAN-Algorithmus auf eine von drei Arten klassifiziert:
- Grundwert: Eine Geografie ist ein Kernwert, wenn sie sich innerhalb von
epsilon
-Entfernung vonminimum_geographies
-Geografien, einschließlich sich selbst befindet. Der Kernwert startet einen neuen Cluster oder wird demselben Cluster als Kernwert innerhalb derepsilon
-Entfernung hinzugefügt. Kernwerte werden in einem Cluster mit allen anderen Kern- und Randwerten gruppiert, die sich innerhalb derepsilon
-Entfernung befinden. - Randwert: Eine Geografie ist ein Randwert, wenn sie innerhalb einer Epilson-Entfernung eines Kernwerts liegt. Sie wird zum selben Cluster als Kernwert innerhalb der
epsilon
-Entfernung hinzugefügt. Ein Randwert kann innerhalb vonepsilon
-Entfernungen mehrerer Cluster liegen. In diesem Fall kann sie willkürlich einem Cluster zugewiesen werden und die Funktion führt für nachfolgende Aufrufe das gleiche Ergebnis. - Nebengeräusch: Eine geografische Umgebung ist ein Nebengeräusch, wenn sie weder ein Kern- noch ein Randwert ist.
Nebengeräuschwerte werden einem
NULL
-Cluster zugewiesen. Eine leereGEOGRAPHY
wird immer als Nebengeräusch klassifiziert.
Einschränkungen
- Das Argument
minimum_geographies
ist ein nicht negativer WertINT64
undepsilon
ist ein nicht negativer WertFLOAT64
. - Eine leere Geografie kann keinem Cluster hinzugefügt werden.
- Für einen Randwert sind mehrere Clustering-Zuweisungen möglich. Wenn eine Geografie ein Randwert ist, weist
ST_CLUSTERDBSCAN
sie einem beliebigen gültigen Cluster zu.
Rückgabetyp
INT64
für jede Region in der Spalte "Geografie".
Beispiele
In diesem Beispiel wird das DBSCAN-Clustering mit einem Radius von 100.000 Metern und einem Argument minimum_geographies
von 1 ausgeführt. Die analysierten Geografien sind eine Mischung aus Punkten, Linien und Polygonen.
WITH Geos as
(SELECT 1 as row_id, ST_GEOGFROMTEXT('POINT EMPTY') as geo UNION ALL
SELECT 2, ST_GEOGFROMTEXT('MULTIPOINT(1 1, 2 2, 4 4, 5 2)') UNION ALL
SELECT 3, ST_GEOGFROMTEXT('POINT(14 15)') UNION ALL
SELECT 4, ST_GEOGFROMTEXT('LINESTRING(40 1, 42 34, 44 39)') UNION ALL
SELECT 5, ST_GEOGFROMTEXT('POLYGON((40 2, 40 1, 41 2, 40 2))'))
SELECT row_id, geo, ST_CLUSTERDBSCAN(geo, 1e5, 1) OVER () AS cluster_num FROM
Geos ORDER BY row_id
+--------+-----------------------------------+-------------+
| row_id | geo | cluster_num |
+--------+-----------------------------------+-------------+
|1 | GEOMETRYCOLLECTION EMPTY |NULL |
|2 | MULTIPOINT(1 1, 2 2, 5 2, 4 4) |0 |
|3 | POINT(14 15) |1 |
|4 | LINESTRING(40 1, 42 34, 44 39) |2 |
|5 | POLYGON((40 2, 40 1, 41 2, 40 2)) |2 |
+--------+-----------------------------------+-------------+
ST_CONTAINS
ST_CONTAINS(geography_1, geography_2)
Beschreibung
Gibt TRUE
zurück, wenn kein Punkt von geography_2
außerhalb von geography_1
liegt und sich das Innere der Geografien schneidet. Andernfalls wird FALSE
zurückgegeben.
HINWEIS: Eine GEOGRAPHY
enthält nicht ihre eigene Grenze. Zum Vergleich: ST_COVERS
.
Rückgabetyp
BOOL
Beispiel
Die folgende Abfrage prüft, ob das Polygon POLYGON((1 1, 20 1, 10 20, 1 1))
jeden der drei Punkte (0, 0)
, (1, 1)
und (10, 10)
enthält, die jeweils außerhalb, auf der Grenze bzw. innerhalb des Polygons liegen.
SELECT
ST_GEOGPOINT(i, i) AS p,
ST_CONTAINS(ST_GEOGFROMTEXT('POLYGON((1 1, 20 1, 10 20, 1 1))'),
ST_GEOGPOINT(i, i)) AS `contains`
FROM UNNEST([0, 1, 10]) AS i;
+--------------+----------+
| p | contains |
+--------------+----------+
| POINT(0 0) | FALSE |
| POINT(1 1) | FALSE |
| POINT(10 10) | TRUE |
+--------------+----------+
ST_CONVEXHULL
ST_CONVEXHULL(geography_expression)
Beschreibung
Gibt die konvexe Struktur für den Eingabe-GEOGRAPHY
zurück. Die konvexe Hülle ist die kleinste konvexe GEOGRAPHY
, die die Eingabe abdeckt. GEOGRAPHY
ist konvex, wenn für jedes Punktpaar in GEOGRAPHY
eine geodätische Kante, die die Punkte verbindet, ebenfalls in derselben GEOGRAPHY
enthalten ist.
In den meisten Fällen besteht die konvexe Hülle aus einem einzelnen Polygon. Wichtige Grenzfälle sind:
- Die konvexe Hüle eines einzelnen Punkts ist ebenfalls ein Punkt.
- Die konvexe Hülle von zwei oder mehr kollinearen Punkten ist ein Linienzug, solange dieser "konvex" ist.
- Wenn der Eingabe-
GEOGRAPHY
mehr als eine Hemisphäre umfasst, ist die konvexe Hülle der gesamte Globus. Dazu gehören alle Eingaben, die ein Paar antipodaler Punkte enthalten. ST_CONVEXHULL
gibtNULL
zurück, wenn die Eingabe entwederNULL
oder die leereGEOGRAPHY
ist.
Rückgabetyp
GEOGRAPHY
Beispiele
Bei der von ST_CONVEXHULL
zurückgegebenen konvexen Hülle kann es sich je nach Eingabe um einen Punkt, einen Linienzug oder ein Polygon handeln.
WITH Geographies AS
(SELECT ST_GEOGFROMTEXT('POINT(1 1)') AS g UNION ALL
SELECT ST_GEOGFROMTEXT('LINESTRING(1 1, 2 2)') AS g UNION ALL
SELECT ST_GEOGFROMTEXT('MULTIPOINT(2 11, 4 12, 0 15, 1 9, 1 12)') AS g)
SELECT
g AS input_geography,
ST_CONVEXHULL(g) AS convex_hull
FROM Geographies;
+-----------------------------------------+--------------------------------------------------------+
| input_geography | convex_hull |
+-----------------------------------------+--------------------------------------------------------+
| POINT(1 1) | POINT(0.999999999999943 1) |
| LINESTRING(1 1, 2 2) | LINESTRING(2 2, 1.49988573656168 1.5000570914792, 1 1) |
| MULTIPOINT(1 9, 4 12, 2 11, 1 12, 0 15) | POLYGON((1 9, 4 12, 0 15, 1 9)) |
+-----------------------------------------+--------------------------------------------------------+
ST_COVEREDBY
ST_COVEREDBY(geography_1, geography_2)
Beschreibung
Gibt FALSE
zurück, wenn geography_1
oder geography_2
leer ist. Gibt TRUE
zurück, wenn keine Punkte von geography_1
außerhalb von geography_2
liegen.
Bei zwei GEOGRAPHY
s a
und b
gibt ST_COVEREDBY(a, b)
dasselbe Ergebnis zurück wie ST_COVERS
(b, a)
. Beachten Sie die umgekehrte Reihenfolge der Argumente.
Rückgabetyp
BOOL
ST_COVERS
ST_COVERS(geography_1, geography_2)
Beschreibung
Gibt FALSE
zurück, wenn geography_1
oder geography_2
leer ist.
Gibt TRUE
zurück, wenn keine Punkte von geography_2
außerhalb von geography_1
liegen.
Rückgabetyp
BOOL
Beispiel
Die folgende Abfrage prüft, ob das Polygon POLYGON((1 1, 20 1, 10 20, 1 1))
jeden der drei Punkte (0, 0)
, (1, 1)
und (10, 10)
abdeckt, die jeweils außerhalb, auf der Grenze bzw. innerhalb des Polygons liegen.
SELECT
ST_GEOGPOINT(i, i) AS p,
ST_COVERS(ST_GEOGFROMTEXT('POLYGON((1 1, 20 1, 10 20, 1 1))'),
ST_GEOGPOINT(i, i)) AS `covers`
FROM UNNEST([0, 1, 10]) AS i;
+--------------+--------+
| p | covers |
+--------------+--------+
| POINT(0 0) | FALSE |
| POINT(1 1) | TRUE |
| POINT(10 10) | TRUE |
+--------------+--------+
ST_DIFFERENCE
ST_DIFFERENCE(geography_1, geography_2)
Beschreibung
Gibt eine GEOGRAPHY
zurück, die die Punktmengendifferenz von geography_1
und geography_2
darstellt. Daher besteht das Ergebnis aus dem Teil von geography_1
, der sich nicht mit geography_2
überschneidet.
Wenn geometry_1
vollständig in geometry_2
enthalten ist, gibt ST_DIFFERENCE
eine leere GEOGRAPHY
zurück.
Einschränkungen
Die zugrunde liegenden geometrischen Objekte, die von einer GoogleSQL-GEOGRAPHY
dargestellt werden, entsprechen einer geschlossenen Punktmenge. Daher ist ST_DIFFERENCE
die Abschließung der Punktmengendifferenz von geography_1
und geography_2
. Dies impliziert, dass bei einer Überschneidung von geography_1
und geography_2
ein Teil der Grenze von geography_2
in der Differenz enthalten sein könnte.
Rückgabetyp
GEOGRAPHY
Beispiel
Die folgende Abfrage veranschaulicht den Unterschied zwischen geog1
, einem größeren Polygon POLYGON((0 0, 10 0, 10 10, 0 0))
und geog1
, einem kleineren Polygon POLYGON((4 2, 6 2, 8 6, 4 2))
, das sich mit geog1
überschneidet. Das Ergebnis ist geog1
mit einem Loch, in dem sich geog2
damit überschneidet.
SELECT
ST_DIFFERENCE(
ST_GEOGFROMTEXT('POLYGON((0 0, 10 0, 10 10, 0 0))'),
ST_GEOGFROMTEXT('POLYGON((4 2, 6 2, 8 6, 4 2))')
);
+--------------------------------------------------------+
| difference_of_geog1_and_geog2 |
+--------------------------------------------------------+
| POLYGON((0 0, 10 0, 10 10, 0 0), (8 6, 6 2, 4 2, 8 6)) |
+--------------------------------------------------------+
ST_DIMENSION
ST_DIMENSION(geography_expression)
Beschreibung
Gibt die Dimension des Elements mit der höchsten Dimension in der Eingabe-GEOGRAPHY
zurück.
Die einzelnen möglichen Elemente haben folgende Dimensionen:
- Die Dimension eines Punkts ist
0
. - Die Dimension eines Linienzugs ist
1
. - Die Dimension eines Polygons ist
2
.
Wenn die Eingabe-GEOGRAPHY
leer ist, gibt ST_DIMENSION
den Wert -1
zurück.
Rückgabetyp
INT64
ST_DISJOINT
ST_DISJOINT(geography_1, geography_2)
Beschreibung
Gibt TRUE
zurück, wenn die Schnittmenge von geography_1
und geography_2
leer ist, also kein Punkt sowohl in geography_1
als auch in geography_2
enthalten ist.
ST_DISJOINT
ist die logische Negation von ST_INTERSECTS
.
Rückgabetyp
BOOL
ST_DISTANCE
ST_DISTANCE(geography_1, geography_2[, use_spheroid])
Beschreibung
Gibt die kürzeste Entfernung zwischen zwei nicht leeren GEOGRAPHY
s in Metern zurück.
Wenn eine der Eingabe-GEOGRAPHY
s leer ist, gibt ST_DISTANCE
den Wert NULL
zurück.
Der optionale Parameter use_spheroid
bestimmt, wie diese Funktion die Entfernung misst. Wenn use_spheroid
auf FALSE
gesetzt ist, misst die Funktion die Entfernung auf der Oberfläche einer perfekten Kugel.
Der Parameter use_spheroid
unterstützt derzeit nur den Wert FALSE
. FALSE
ist auch der Standardwert von use_spheroid
.
Rückgabetyp
FLOAT64
ST_DUMP
ST_DUMP(geography[, dimension])
Beschreibung
Gibt ein ARRAY
von einfachen GEOGRAPHY
s zurück, in denen jedes Element eine Komponente der Eingabe-GEOGRAPHY
ist. Eine einfache GEOGRAPHY
besteht aus einem einzelnen Punkt, Linienzug oder Polygon. Wenn die Eingabe-GEOGRAPHY
einfach ist, ist das Ergebnis ein einzelnes Element. Wenn die Eingabe-GEOGRAPHY
eine Sammlung ist, gibt ST_DUMP
ein ARRAY
mit einer einfachen GEOGRAPHY
für jede Komponente in der Sammlung zurück.
Wenn dimension
angegeben wird, gibt die Funktion nur GEOGRAPHY
s der entsprechenden Dimension zurück. Eine Dimension von -1 entspricht dem Weglassen von dimension
.
Rückgabetyp
ARRAY<GEOGRAPHY>
Beispiele
Das folgende Beispiel zeigt, wie ST_DUMP
die einfachen Regionen innerhalb einer komplexen Geografie zurückgibt.
WITH example AS (
SELECT ST_GEOGFROMTEXT('POINT(0 0)') AS geography
UNION ALL
SELECT ST_GEOGFROMTEXT('MULTIPOINT(0 0, 1 1)') AS geography
UNION ALL
SELECT ST_GEOGFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 2, 2 1))'))
SELECT
geography AS original_geography,
ST_DUMP(geography) AS dumped_geographies
FROM example
+-------------------------------------+------------------------------------+
| original_geographies | dumped_geographies |
+-------------------------------------+------------------------------------+
| POINT(0 0) | [POINT(0 0)] |
| MULTIPOINT(0 0, 1 1) | [POINT(0 0), POINT(1 1)] |
| GEOMETRYCOLLECTION(POINT(0 0), | [POINT(0 0), LINESTRING(1 2, 2 1)] |
| LINESTRING(1 2, 2 1)) | |
+-------------------------------------+------------------------------------+
Das folgende Beispiel zeigt, wie ST_DUMP
mit dem Dimensionsargument nur einfache Geografien der angegebenen Dimension zurückgibt.
WITH example AS (
SELECT ST_GEOGFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 2, 2 1))') AS geography)
SELECT
geography AS original_geography,
ST_DUMP(geography, 1) AS dumped_geographies
FROM example
+-------------------------------------+------------------------------+
| original_geographies | dumped_geographies |
+-------------------------------------+------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0), | [LINESTRING(1 2, 2 1)] |
| LINESTRING(1 2, 2 1)) | |
+-------------------------------------+------------------------------+
ST_DWITHIN
ST_DWITHIN(geography_1, geography_2, distance[, use_spheroid])
Beschreibung
Gibt TRUE
zurück, wenn die Entfernung zwischen mindestens einem Punkt in geography_1
und einem Punkt in geography_2
kleiner oder gleich der Entfernung ist, die vom Argument distance
angegeben wird. Andernfalls wird FALSE
zurückgegeben. Wenn eine der Eingaben-GEOGRAPHY
s leer ist, gibt ST_DWithin
den Wert FALSE
zurück. Die distance
wird in Metern auf der Erdoberfläche angegeben.
Der optionale Parameter use_spheroid
bestimmt, wie diese Funktion die Entfernung misst. Wenn use_spheroid
auf FALSE
gesetzt ist, misst die Funktion die Entfernung auf der Oberfläche einer perfekten Kugel.
Der Parameter use_spheroid
unterstützt derzeit nur den Wert FALSE
. FALSE
ist auch der Standardwert von use_spheroid
.
Rückgabetyp
BOOL
ST_ENDPOINT
ST_ENDPOINT(linestring_geography)
Beschreibung
Gibt den letzten Punkt einer LineString-Geografie als Punkt-Geografie zurück. Gibt einen Fehler zurück, wenn die Eingabe kein LineString oder leer ist. Verwenden Sie das Präfix SAFE
, um NULL
für eine ungültige Eingabe anstelle eines Fehlers abzurufen.
Rückgabetyp
Punkt GEOGRAPHY
Beispiel
SELECT ST_ENDPOINT(ST_GEOGFROMTEXT('LINESTRING(1 1, 2 1, 3 2, 3 3)')) last
+--------------+
| last |
+--------------+
| POINT(3 3) |
+--------------+
ST_EQUALS
ST_EQUALS(geography_1, geography_2)
Beschreibung
Gibt TRUE
zurück, wenn geography_1
und geography_2
denselben
Wert GEOGRAPHY
darstellen. Konkret bedeutet dies, dass eine der folgenden Bedingungen zutrifft:
+ ST_COVERS(geography_1, geography_2) = TRUE
und ST_COVERS(geography_2,
geography_1) = TRUE
+ geography_1
und geography_2
sind leer.
Daher können zwei GEOGRAPHY
s auch dann gleich sein, wenn sich die Reihenfolge der Punkte oder Eckpunkte unterscheidet, solange sie immer noch dieselbe geometrische Struktur darstellen.
Einschränkungen
Es wird nicht garantiert, dass ST_EQUALS
eine transitive Funktion ist.
Rückgabetyp
BOOL
ST_EXTENT
ST_EXTENT(geography_expression)
Beschreibung
Gibt eine STRUCT
zurück, die den Begrenzungsrahmen für den Satz von GEOGRAPHY
-Eingabewerten darstellt. Der Begrenzungsrahmen ist das minimale Rechteck, das die Geografie einschließt. Die Kanten des Rechtecks folgen konstanten Längen- und Breitengradlinien.
Vorsichtsmaßnahmen:
- Gibt
NULL
zurück, wenn alle EingabenNULL
oder leere Regionen sind. - Der Begrenzungsrahmen kann den Antimeridian kreuzen, wenn dadurch ein kleineres Rechteck möglich ist. In diesem Fall liegt eine der Längsbegrenzungen des Begrenzungsrahmens außerhalb des Bereichs [-180, 180], sodass
xmin
kleiner ist als der östlichste Wertxmax
. - Wenn die Längengradspanne des Begrenzungsrahmens größer oder gleich 180 Grad ist, gibt die Funktion den Begrenzungsrahmen mit dem Längengradbereich [-180, 180] zurück.
Rückgabetyp
STRUCT<xmin FLOAT64, ymin FLOAT64, xmax FLOAT64, ymax FLOAT64>
.
Teile des Begrenzungsrahmens:
xmin
: Die westlichste konstante Längengradlinie, die das Rechteck umgrenzt.xmax
: Die östlichste konstante Längengradlinie, die das Rechteck umgrenzt.ymin
: Die minimale konstante Breitengradlinie, die das Rechteck umgrenzt.ymax
: Die maximale konstante Breitengradlinie, die das Rechteck begrenzt.
Beispiel
WITH data AS (
SELECT 1 id, ST_GEOGFROMTEXT('POLYGON((-125 48, -124 46, -117 46, -117 49, -125 48))') g
UNION ALL
SELECT 2 id, ST_GEOGFROMTEXT('POLYGON((172 53, -130 55, -141 70, 172 53))') g
UNION ALL
SELECT 3 id, ST_GEOGFROMTEXT('POINT EMPTY') g
)
SELECT ST_EXTENT(g) AS box
FROM data
+----------------------------------------------+
| box |
+----------------------------------------------+
| {xmin:172, ymin:46, xmax:243, ymax:70} |
+----------------------------------------------+
Unter ST_BOUNDINGBOX
finden Sie die Version von ST_EXTENT
ohne Aggregation.
ST_EXTERIORRING
ST_EXTERIORRING(polygon_geography)
Beschreibung
Gibt eine LineString-Geografie zurück, die dem äußersten Ring einer Polygongeografie entspricht.
- Wenn die Eingabegeografie ein Polygon ist, wird der äußerste Ring der Polygongeografie abgerufen und der entsprechende LineString zurückgegeben.
- Wenn die Eingabe die vollständige
GEOGRAPHY
ist, wird eine leere Geografie zurückgegeben. - Gibt einen Fehler zurück, wenn die Eingabe kein einzelnes Polygon ist.
Verwenden Sie das Präfix SAFE
, um NULL
für eine ungültige Eingabe anstelle eines Fehlers abzurufen.
Rückgabetyp
- LineString
GEOGRAPHY
GEOGRAPHY
ist leer
Beispiele
WITH geo as
(SELECT ST_GEOGFROMTEXT('POLYGON((0 0, 1 4, 2 2, 0 0))') AS g UNION ALL
SELECT ST_GEOGFROMTEXT('''POLYGON((1 1, 1 10, 5 10, 5 1, 1 1),
(2 2, 3 4, 2 4, 2 2))''') as g)
SELECT ST_EXTERIORRING(g) AS ring FROM geo;
+---------------------------------------+
| ring |
+---------------------------------------+
| LINESTRING(2 2, 1 4, 0 0, 2 2) |
| LINESTRING(5 1, 5 10, 1 10, 1 1, 5 1) |
+---------------------------------------+
ST_GEOGFROM
ST_GEOGFROM(expression)
Beschreibung
Wandelt einen Ausdruck für einen STRING
- oder BYTES
-Wert in einen GEOGRAPHY
-Wert um.
Wenn expression
einen STRING
-Wert darstellt, muss es eine gültige GEOGRAPHY
-Darstellung in einem der folgenden Formate sein:
- WKT-Format. Weitere Informationen zu diesem Format und den Anforderungen für die Verwendung finden Sie unter ST_GEOGFROMTEXT.
- WKB im Hexadezimaltextformat. Weitere Informationen zu diesem Format und den Anforderungen für die Verwendung finden Sie unter ST_GEOGFROMWKB.
- GeoJSON-Format. Weitere Informationen zu diesem Format und den Anforderungen für die Verwendung finden Sie unter ST_GEOGFROMGEOJSON.
Wenn expression
einen BYTES
-Wert darstellt, muss es ein gültiger GEOGRAPHY
-binärer Ausdruck im WKB-Format sein. Weitere Informationen zu diesem Format und den Anforderungen für die Verwendung finden Sie unter ST_GEOGFROMWKB.
Wenn expression
NULL
ist, ist die Ausgabe NULL
.
Rückgabetyp
GEOGRAPHY
Beispiele
Dieser Typ verwendet einen WKT-formatierten String und gibt ein GEOGRAPHY
-Polygon zurück:
SELECT ST_GEOGFROM('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))') AS WKT_format
+------------------------------------+
| WKT_format |
+------------------------------------+
| POLYGON((2 0, 2 2, 0 2, 0 0, 2 0)) |
+------------------------------------+
Dabei wird ein WKB-formatierter hexadezimal codierter String verwendet und ein GEOGRAPHY
-Punkt zurückgegeben:
SELECT ST_GEOGFROM(FROM_HEX('010100000000000000000000400000000000001040')) AS WKB_format
+----------------+
| WKB_format |
+----------------+
| POINT(2 4) |
+----------------+
Dieser Typ nimmt WKB-formatierte Bytes zurück und gibt einen GEOGRAPHY
-Punkt zurück:
SELECT ST_GEOGFROM('010100000000000000000000400000000000001040')-AS WKB_format
+----------------+
| WKB_format |
+----------------+
| POINT(2 4) |
+----------------+
Dieser Typ verwendet einen GeoJSON-formatierten String und gibt ein Polygon GEOGRAPHY
zurück:
SELECT ST_GEOGFROM(
'{ "type": "Polygon", "coordinates": [ [ [2, 0], [2, 2], [1, 2], [0, 2], [0, 0], [2, 0] ] ] }'
) AS GEOJSON_format
+-----------------------------------------+
| GEOJSON_format |
+-----------------------------------------+
| POLYGON((2 0, 2 2, 1 2, 0 2, 0 0, 2 0)) |
+-----------------------------------------+
ST_GEOGFROMGEOJSON
ST_GEOGFROMGEOJSON(geojson_string [, make_valid => constant_expression])
Beschreibung
Gibt einen GEOGRAPHY
-Wert zurück, der der Eingabedarstellung im GeoJSON-Format entspricht.
ST_GEOGFROMGEOJSON
nimmt Eingaben an, die RFC 7946-konform sind.
Wenn der Parameter make_valid
auf TRUE
gesetzt ist, versucht die Funktion, Polygone zu reparieren, die nicht der Semantik des Open Geospatial Consortium entsprechen.
Dieser Parameter verwendet eine Syntax mit benannten Argumenten und sollte mit der Syntax make_valid => argument_value
angegeben werden.
Eine GEOGRAPHY
von GoogleSQL hat sphärische geodätische Kanten, während ein Geometry
-Objekt im GeoJSON-Format explizit planare Kanten hat.
Zur Umwandlung dieser zwei Arten von Kanten fügt GoogleSQL der Linie bei Bedarf zusätzliche Punkte hinzu, sodass die resultierende Abfolge von Kanten im Umkreis von zehn Metern zur ursprünglichen Kante bleibt.
Unter ST_ASGEOJSON
erfahren Sie, wie Sie eine GEOGRAPHY
als GeoJSON formatieren.
Einschränkungen
Die JSON-Eingabe unterliegt den folgenden Einschränkungen:
ST_GEOGFROMGEOJSON
nimmt nur JSON-Geometriefragmente an und kann nicht zur Aufnahme eines ganzen JSON-Dokuments verwendet werden.- Das JSON-Fragment in der Eingabe muss aus einem GeoJSON-Geometrietyp wie
Point
,MultiPoint
,LineString
,MultiLineString
,Polygon
,MultiPolygon
oderGeometryCollection
bestehen. Jeder andere GeoJSON-Typ wieFeature
oderFeatureCollection
führt zu einem Fehler. - Eine Position im
coordinates
-Mitglied eines GeoJSON-Geometrietyps muss aus genau zwei Elementen bestehen. Das erste ist der Längengrad und das zweite der Breitengrad. Daher unterstütztST_GEOGFROMGEOJSON
nicht das optionale dritte Element für eine Position imcoordinates
-Mitglied.
Rückgabetyp
GEOGRAPHY
ST_GEOGFROMTEXT
Signatur 1
ST_GEOGFROMTEXT(wkt_string[, oriented])
Beschreibung
Gibt einen GEOGRAPHY
-Wert zurück, der der Eingabedarstellung im WKT-Format entspricht.
Diese Funktion unterstützt einen optionalen Parameter vom Typ BOOL
, oriented
. Bei Einstellung dieses Parameters auf TRUE
wird davon ausgegangen, dass alle Polygone in der Eingabe nach dem folgenden Muster ausgerichtet sind: Wenn eine Person in der Reihenfolge der Eingabeeckpunkte an der Grenze des Polygons entlanggeht, befindet sich das Innere des Polygons auf der linken Seite. Dadurch können mit WKT Polygone dargestellt werden, die größer als eine Halbkugel sind. Wenn oriented
auf FALSE
gesetzt oder weggelassen wird, gibt diese Funktion das Polygon mit der kleineren Fläche zurück.
Siehe auch ST_MAKEPOLYGONORIENTED
, das ST_GEOGFROMTEXT
mit oriented=TRUE
ähnelt.
Verwenden Sie ST_ASTEXT
zum Formatieren von GEOGRAPHY
als WKT.
Einschränkungen
- Es wird angenommen, dass alle Eingabekanten sphärische geodätische Linien und keine planaren Geraden sind. Wenn Sie Daten in einer planaren Projektion lesen möchten, sollten Sie
ST_GEOGFROMGEOJSON
verwenden. Weitere Informationen zu den Unterschieden zwischen sphärischen geodätischen Linien und planaren Linien finden Sie unter Koordinatensysteme und Kanten. - Die Funktion unterstützt weder dreidimensionale Geometrien mit einem Suffix
Z
noch Geometrien linearer Referenzsysteme mit dem SuffixM
. - Die Funktion unterstützt nur geometrische Primitive und mehrteilige Geometrien. Insbesondere werden nur Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon und GeometryCollection unterstützt.
Rückgabetyp
GEOGRAPHY
Beispiel
Die folgende Abfrage liest den WKT-String POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))
sowohl als nicht ausgerichtetes Polygon als auch als ausgerichtetes Polygon und prüft, ob jedes Ergebnis den Punkt (1, 1)
enthält.
WITH polygon AS (SELECT 'POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))' AS p)
SELECT
ST_CONTAINS(ST_GEOGFROMTEXT(p), ST_GEOGPOINT(1, 1)) AS fromtext_default,
ST_CONTAINS(ST_GEOGFROMTEXT(p, FALSE), ST_GEOGPOINT(1, 1)) AS non_oriented,
ST_CONTAINS(ST_GEOGFROMTEXT(p, TRUE), ST_GEOGPOINT(1, 1)) AS oriented
FROM polygon;
+-------------------+---------------+-----------+
| fromtext_default | non_oriented | oriented |
+-------------------+---------------+-----------+
| TRUE | TRUE | FALSE |
+-------------------+---------------+-----------+
Signatur 2
ST_GEOGFROMTEXT(wkt_string[, oriented => boolean_constant_1]
[, planar => boolean_constant_2] [, make_valid => boolean_constant_3])
Beschreibung
Gibt einen GEOGRAPHY
-Wert zurück, der der Eingabedarstellung im WKT-Format entspricht.
Diese Funktion unterstützt drei optionale Parameter vom Typ BOOL
: oriented
, planar
und make_valid
.
Diese Signatur verwendet benannte Argumentsyntax und die Parameter müssen in beliebiger Reihenfolge mit der parameter_name => parameter_value
-Syntax angegeben werden.
Bei Einstellung des Parameters oriented
auf TRUE
wird davon ausgegangen, dass alle Polygone in der Eingabe nach dem folgenden Muster ausgerichtet sind: Wenn eine Person in der Reihenfolge der Eingabeeckpunkte an der Grenze des Polygons entlanggeht, befindet sich das Innere des Polygons auf der linken Seite. Dadurch können mit WKT Polygone dargestellt werden, die größer als eine Halbkugel sind. Wenn oriented
auf FALSE
gesetzt oder weggelassen wird, gibt diese Funktion das Polygon mit der kleineren Fläche zurück.
Siehe auch ST_MAKEPOLYGONORIENTED
, das ST_GEOGFROMTEXT
mit oriented=TRUE
ähnelt.
Wenn der Parameter planar
auf TRUE
gesetzt ist, wird davon ausgegangen, dass für die Kanten der Linienstrings und Polygone die Semantik für planare Karten und nicht die standardmäßige sphärische geodätische Semantik von GoogleSQL verwendet wird. Weitere Informationen zu den Unterschieden zwischen sphärischen geodätischen Linien und planaren Linien finden Sie unter Koordinatensysteme und Kanten.
Wenn der Parameter make_valid
auf TRUE
gesetzt ist, versucht die Funktion, Polygone zu reparieren, die nicht der Semantik des Open Geospatial Consortium entsprechen.
Verwenden Sie ST_ASTEXT
zum Formatieren von GEOGRAPHY
als WKT.
Einschränkungen
- Es wird angenommen, dass alle Eingabekanten standardmäßig sphärische geodätische Linien und keine planaren Geraden sind. Wenn Sie Daten in einer planaren Projektion lesen möchten, sollten Sie das Argument
planar => TRUE
übergeben oderST_GEOGFROMGEOJSON
verwenden. Weitere Informationen zu den Unterschieden zwischen sphärischen geodätischen Linien und planaren Linien finden Sie unter Koordinatensysteme und Kanten. - Die Funktion unterstützt weder dreidimensionale Geometrien mit einem Suffix
Z
noch Geometrien linearer Referenzsysteme mit dem SuffixM
. - Die Funktion unterstützt nur geometrische Primitive und mehrteilige Geometrien. Insbesondere werden nur Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon und GeometryCollection unterstützt.
oriented
undplanar
können nicht gleichzeitigTRUE
sein.oriented
undmake_valid
können nicht gleichzeitigTRUE
sein.
Beispiel
Die folgende Abfrage liest den WKT-String POLYGON((0 0, 0 2, 2 2, 0 2, 0 0))
sowohl als nicht ausgerichtetes Polygon als auch als ausgerichtetes Polygon und prüft, ob jedes Ergebnis den Punkt (1, 1)
enthält.
WITH polygon AS (SELECT 'POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))' AS p)
SELECT
ST_CONTAINS(ST_GEOGFROMTEXT(p), ST_GEOGPOINT(1, 1)) AS fromtext_default,
ST_CONTAINS(ST_GEOGFROMTEXT(p, oriented => FALSE), ST_GEOGPOINT(1, 1)) AS non_oriented,
ST_CONTAINS(ST_GEOGFROMTEXT(p, oriented => TRUE), ST_GEOGPOINT(1, 1)) AS oriented
FROM polygon;
+-------------------+---------------+-----------+
| fromtext_default | non_oriented | oriented |
+-------------------+---------------+-----------+
| TRUE | TRUE | FALSE |
+-------------------+---------------+-----------+
Die folgende Abfrage konvertiert einen WKT-String mit einem ungültigen Polygon in GEOGRAPHY
. Der WKT-String verstößt gegen zwei Eigenschaften eines gültigen Polygons – die Schleife, die das Polygon beschreibt, ist nicht geschlossen und enthält eine Selbstschneidung. Mit der Option make_valid
wird ST_GEOGFROMTEXT
in eine Multipolygon-Form umgewandelt.
WITH data AS (
SELECT 'POLYGON((0 -1, 2 1, 2 -1, 0 1))' wkt)
SELECT
SAFE.ST_GEOGFROMTEXT(wkt) as geom,
SAFE.ST_GEOGFROMTEXT(wkt, make_valid => TRUE) as valid_geom
FROM data
+------+-----------------------------------------------------------------+
| geom | valid_geom |
+------+-----------------------------------------------------------------+
| NULL | MULTIPOLYGON(((0 -1, 1 0, 0 1, 0 -1)), ((1 0, 2 -1, 2 1, 1 0))) |
+------+-----------------------------------------------------------------+
ST_GEOGFROMWKB
ST_GEOGFROMWKB(wkb_bytes_expression)
ST_GEOGFROMWKB(wkb_hex_string_expression)
Beschreibung
Wandelt einen Ausdruck für einen hexadezimalen STRING
- oder BYTES
-Wert in einen GEOGRAPHY
-Wert um. Der Ausdruck muss das WKB-Format haben.
Verwenden Sie ST_ASBINARY
zum Formatieren von GEOGRAPHY
als WKB.
Einschränkungen
Es wird angenommen, dass alle Eingabekanten sphärische geodätische Linien und keine planaren Geraden sind. Wenn Sie Daten in einer planaren Projektion lesen möchten, sollten Sie ST_GEOGFROMGEOJSON
verwenden.
Rückgabetyp
GEOGRAPHY
ST_GEOGPOINT
ST_GEOGPOINT(longitude, latitude)
Beschreibung
Erstellt eine GEOGRAPHY
mit einem einzelnen Punkt. ST_GEOGPOINT
erstellt einen Punkt aus dem angegebenen Parametern FLOAT64
-Längengrad (in Grad, negativ: Westlich des Nullmeridians, positiv: Östlich) und Breitengrad (in Grad, positiv: Nördlich des Äquators, negativ: Südlich) und gibt diesen Punkt in einem GEOGRAPHY
-Wert zurück.
HINWEIS: Einige Systeme geben zuerst den Breitengrad an. Achten Sie auf die Reihenfolge der Argumente.
Einschränkungen
- Längengrade außerhalb des Bereichs [-180, 180] sind zulässig.
ST_GEOGPOINT
verwendet den Eingabelängengrad-Modulo 360, um einen Längengrad innerhalb von [-180, 180] zu ermitteln. - Breitengrade müssen im Bereich [-90, 90] liegen. Breitengrade außerhalb dieses Bereichs führen zu einem Fehler.
Rückgabetyp
Punkt GEOGRAPHY
ST_GEOGPOINTFROMGEOHASH
ST_GEOGPOINTFROMGEOHASH(geohash)
Beschreibung
Gibt einen GEOGRAPHY
-Wert zurück, der einem Punkt in der Mitte eines Begrenzungsrahmens entspricht, der im GeoHash definiert ist.
Rückgabetyp
Punkt GEOGRAPHY
ST_GEOHASH
ST_GEOHASH(geography_expression[, maxchars])
Beschreibung
Nimmt eine Ein-Punkt-GEOGRAPHY
an und gibt eine GeoHash-Darstellung dieses GEOGRAPHY
-Objekts zurück.
geography_expression
: stellt einGEOGRAPHY
-Objekt dar. Es wird nur einGEOGRAPHY
-Objekt unterstützt, das einen einzelnen Punkt darstellt. WennST_GEOHASH
für ein leeresGEOGRAPHY
-Objekt verwendet wird, wirdNULL
zurückgegeben.maxchars
: Der optionale ParameterINT64
gibt die maximale Anzahl der Zeichen an, die der Hash enthalten soll. Weniger Zeichen entsprechen einer geringeren Genauigkeit oder, anders ausgedrückt, einem größeren Begrenzungsrahmen.maxchars
ist standardmäßig 20, wenn nicht explizit angegeben. Ein gültigermaxchars
-Wert liegt zwischen 1 und 20 (inklusive). Jeder Wert unter oder höher gilt als nicht angegeben und es wird der Standardwert 20 verwendet.
Rückgabetyp
STRING
Beispiel
Gibt einen GeoHash des Seattle Centers mit einer Genauigkeit von zehn Zeichen zurück.
SELECT ST_GEOHASH(ST_GEOGPOINT(-122.35, 47.62), 10) geohash
+--------------+
| geohash |
+--------------+
| c22yzugqw7 |
+--------------+
ST_GEOMETRYTYPE
ST_GEOMETRYTYPE(geography_expression)
Beschreibung
Gibt den OGC-Geometrietyp (Open Geospatial Consortium) zurück, der die Eingabe-GEOGRAPHY
als einen STRING
beschreibt. Der OGC-Geometrietyp entspricht den Typen, die in den Formaten WKT und GeoJSON verwendet und für ST_ASTEXT und ST_ASGEOJSON gedruckt werden.
ST_GEOMETRYTYPE
gibt den OGC-Geometrietyp mit dem Präfix "ST_" zurück.
ST_GEOMETRYTYPE
gibt Folgendes für den Typ der Eingabe zurück:
- Ein-Punkt-Geografie: Gibt
ST_Point
zurück. - Sammlung von nur Punkten: Gibt
ST_MultiPoint
zurück. - Geografie mit einem LineString: Gibt
ST_LineString
zurück. - Sammlung von nur LinienStrings: Gibt
ST_MultiLineString
zurück. - Geografie mit einem Polygon: Gibt
ST_Polygon
zurück. - Sammlung von nur Polygonen: Gibt
ST_MultiPolygon
zurück. - Sammlung mit Elementen verschiedener Dimensionen, oder die Eingabe ist die leere Geografie: Gibt
ST_GeometryCollection
zurück.
Rückgabetyp
STRING
Beispiel
Das folgende Beispiel zeigt, wie ST_GEOMETRYTYPE
Regionen übernimmt und die Namen ihrer OGC-Geometrietypen zurückgibt.
WITH example AS(
SELECT ST_GEOGFROMTEXT('POINT(0 1)') AS geography
UNION ALL
SELECT ST_GEOGFROMTEXT('MULTILINESTRING((2 2, 3 4), (5 6, 7 7))')
UNION ALL
SELECT ST_GEOGFROMTEXT('GEOMETRYCOLLECTION(MULTIPOINT(-1 2, 0 12), LINESTRING(-2 4, 0 6))')
UNION ALL
SELECT ST_GEOGFROMTEXT('GEOMETRYCOLLECTION EMPTY'))
SELECT
geography AS WKT,
ST_GEOMETRYTYPE(geography) AS geometry_type_name
FROM example;
+-------------------------------------------------------------------+-----------------------+
| WKT | geometry_type_name |
+-------------------------------------------------------------------+-----------------------+
| POINT(0 1) | ST_Point |
| MULTILINESTRING((2 2, 3 4), (5 6, 7 7)) | ST_MultiLineString |
| GEOMETRYCOLLECTION(MULTIPOINT(-1 2, 0 12), LINESTRING(-2 4, 0 6)) | ST_GeometryCollection |
| GEOMETRYCOLLECTION EMPTY | ST_GeometryCollection |
+-------------------------------------------------------------------+-----------------------+
ST_INTERIORRINGS
ST_INTERIORRINGS(polygon_geography)
Beschreibung
Gibt ein Array von Linienzug-Geografien zurück, das den Innenringen einer Polygongeografie entspricht. Jeder Innenring ist der Rand eines Lochs im Eingabepolygon.
- Wenn die Eingabegeographie ein Polygon ist, wird der äußere Ring der Polygongeografie ausgeschlossen und es werden die Linestrings zurückgegeben, die den inneren Ringen entsprechen.
- Wenn die Eingabe die vollständige
GEOGRAPHY
ist, wird ein leeres Array zurückgegeben. - Wenn das Eingabepolygon keine Löcher hat, wird ein leeres Array z