Freigeben über


h3_tessellateaswkb-Funktion

Gilt für: Häkchen ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 14.2 und höher

Gibt eine Tessellation der Eingabegeografie mithilfe von H3-Zellen in der angegebenen Auflösung zurück. Die Tessellation wird durch ein ARRAY von Strukturen dargestellt, die jeweils ein Element der Tessellation darstellen. Jedes Element der Tessellation besteht aus einer H3-Zell-ID (dargestellt als Long Integer), einem booleschen Wert, der angibt, ob die Eingabegeografie die Zelle vollständig abdeckt, und einen BINARY-Wert, welcher der WKB-Beschreibung des Schnittpunkts der Eingabegeografie mit der Zelle H3 entspricht.

Die zurückgegebenen H3-Zellen bilden zusammen eine minimale Abdeckung von Sechsecken oder Fünfecken in der angegebenen Auflösung, welche die Eingabegeografie vollständig abdecken. Die zurückgegebenen Regionen (über ihre WKB-Darstellungen) bilden eine Tessellation der Eingabegeografie.

Syntax

h3_tessellateaswkb ( geographyExpr, resolutionExpr )

Argumente

  • geographyExpr: Ein BINARY- oder STRING-Ausdruck, der eine Geographie in WKB, WKT oder GeoJSON darstellt. Für die Geographie werden Längen- und Breitengrade erwartet, die auf WGS84-Koordinatenreferenzsystem verweisen.
  • resolutionExpr: Ein INT-Ausdruck mit einem Wert zwischen 0 und einschließlich 15, der die Auflösung für die H3-Zellen-IDs angibt.

Gibt zurück

Ein ARRAY mit benannten Strukturen mit drei Feldern vom Typ BIGINT, BOOLEAN und BINARY, benannt cellid, core bzw chip, welche die Tessellation der Eingabegeografie mit H3-Zellen in der angegebenen Auflösung darstellt.

Das erste Feld in der Struktur ist eine H3-Zell-ID (dargestellt als Long Integer). Das zweite Feld in der Struktur ist ein boolescher Wert, der angibt, ob es sich bei der Zelle H3 um eine Kernzelle handelt. Wenn ja ist true der Wert des Felds ist und wenn nicht, dann ist false der Wert des Felds. Eine Kernzelle ist eine H3-Zelle, die vollständig von der Eingabegeografie abgedeckt ist (d. h. die Schnittmenge mit der Eingabegeografie ist die Zelle selbst). Das dritte Feld ist ein BINARY-Wert, der die WKB-Beschreibung der Geografie darstellt, welche die Schnittmenge der Eingabegeografie und der Zelle H3 darstellt. Die zurückgegebenen H3-Zellen bilden zusammen eine minimale Abdeckungsmenge der Eingabegeografie. Die Regionen, die den zurückgegebenen WKB-Beschreibungen entsprechen, bilden zusammen eine Tessellation (Zerlegung) der Eingabegeografie.

Die Funktion gibt NULL zurück, wenn einer der Eingabeausdrücke NULL ist. Wenn das erste Eingabeargument vom Typ BINARY ist, wird erwartet, dass der Eingabewert die WKB-Beschreibung eines Punkts, einer Linienzeichenfolge, eines Polygons, eines Multipoints, einer mehrzeiligen Zeichenfolge oder eines Multipolygons ist. Wenn das erste Eingabeargument vom Typ STRING ist, wird erwartet, dass der Eingabewert entweder die WKT- oder die GeoJSON-Beschreibung eines Punkts, einer Linienzeichenfolge, eines Polygons, mehrerer Punkte, einer mehrzeiligen Zeichenfolge oder eines Multipolygons ist. Die Dimension der Eingabegeografie kann 2D, 3DZ, 3DM oder 4D sein.

Fehlerbedingungen

  • Wenn geographyExpr vom Typ BINARY ist und der Wert entweder eine ungültige WKB ist oder eine Geometrieauflistung darstellt, gibt die Funktion WKB_PARSE_ERROR zurück.
  • Wenn geographyExpr vom Typ STRING ist und der Wert entweder ein ungültiges WKT ist oder eine Geometrieauflistung darstellt, gibt die Funktion WKT_PARSE_ERROR zurück.
  • Wenn geographyExpr vom Typ STRING ist und der Wert entweder ein ungültiger GeoJSON-Wert ist oder eine Geometrieauflistung darstellt, gibt die Funktion GEOJSON_PARSE_ERROR zurück.
  • Wenn resolutionExpr kleiner als 0 oder größer als 15 ist, gibt die Funktion H3_INVALID_RESOLUTION_VALUE zurück.

Beispiele

> SELECT h3_h3tostring(cellid), core, hex(chip) FROM (SELECT inline(h3_tessellateaswkb('MULTIPOINT(20 0,20 10,40 30)', 0))) ORDER BY 1
  802dfffffffffff     false 010100000000000000000044400000000000003E40
  806bfffffffffff     false 010400000002000000010100000000000000000034400000000000000000010100000000000000000034400000000000002440

-- Feeding an empty geometry collection in GeoJSON format (geometry collections are not supported).
> SELECT h3_tessellateaswkb('{"type":"GeometryCollection","geometries":[]}', 2)
  [GEOJSON_PARSE_ERROR] Error parsing GeoJSON: Invalid or unsupported type '"GeometryCollection"' at position 9 SQLSTATE: 22023

-- Feeding an invalid WKB (invalid endianness value)
> SELECT h3_tessellateaswkb(unhex('020700000000'), 2)
  [WKB_PARSE_ERROR] Error parsing WKB: Invalid byte order 2 at position 1 SQLSTATE: 22023

-- Feeding an invalid polygon in WKT (polygon is not closed)
> SELECT h3_tessellateaswkb('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-74.0060 40.7128))', 2)
  [WKT_PARSE_ERROR] Error parsing WKT: Found non-closed ring at position 80 SQLSTATE: 22023

-- Resolution is out of range.
> SELECT h3_tessellateaswkb('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-122.4194 37.7749))', 16)
  [H3_INVALID_RESOLUTION_VALUE] H3 resolution 16 must be between 0 and 15, inclusive SQLSTATE: 22023