Skip to main content

h3_try_coverash3 function

Applies to: check marked yes Databricks SQL check marked yes Databricks Runtime 16.3 and above

This function behaves the same as h3_coverash3, but returns NULL instead of an error if the first argument is invalid. It returns an ARRAY of BIGINT values representing H3 cell IDs. These values correspond to the minimal set of hexagons or pentagons at the specified resolution that fully covers the input linear or areal geography.

Syntax

h3_try_coverash3 ( geographyExpr, resolutionExpr )

Arguments

  • geographyExpr: A BINARY or STRING expression representing a linear (linestring or multilinestring) or areal (polygon or multipolygon) geography in WKB, WKT, or GeoJSON. The geography must have longitude and latitude coordinates in degrees that refer to the WGS84 coordinate reference system.
  • resolutionExpr: An INT expression, with a value between 0 and 15 inclusive, specifying the resolution for the H3 cell IDs.

Returns

An ARRAY of BIGINT values corresponding to the minimal set of hexagons or pentagons at the specified resolution that fully covers the input linear or areal geography.

The function returns NULL if any one of the input expressions is NULL. If the first input argument is of type BINARY, the input value must be the WKB description of a polygon or a multipolygon. If the first input argument is of type STRING, the input value must be either the WKT or the GeoJSON description of a linestring, polygon, multilinestring, or multipolygon. The dimension of the input linestring, polygon, multilinestring, or multipolygon can be 2D, 3DZ, 3DM, or 4D. The function returns NULL if the first argument corresponds to an invalid WKB, WKT, or GeoJSON or does not represent a linestring, polygon, multilinestring, or multipolygon.

Error conditions

Examples

SQL
-- Simple example where the input is a triangle in WKT format.
> SELECT h3_try_coverash3('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-122.4194 37.7749))', 0)
[577164439745200127, 577199624117288959, 577234808489377791, 577762574070710271]

-- Simple example where the input is a triangle in hexadecimal WKB format.
> SELECT h3_try_coverash3(unhex('0103000000010000000400000050fc1873d79a5ec0d0d556ec2fe342404182e2c7988f5dc0f46c567dae064140aaf1d24d628052c05e4bc8073d5b444050fc1873d79a5ec0d0d556ec2fe34240'), 0)
[577164439745200127, 577199624117288959, 577234808489377791, 577762574070710271]

-- Simple example where the input is a linestring in GeoJSON format.
SELECT h3_try_coverash3('{"type":"LineString","coordinates":[[-122.4194,37.7749],[-118.2437,34.0522],[-74.0060,40.7128]]}', 1)
[582248581512036351, 581698825698148351, 581707621791170559, 581716417884192767, 581641651093503999, 581650447186526207, 581672437419081727]

-- Feeding an empty multipoint in GeoJSON format (as opposed to a linestring, polygon, multilinestring, or multipolygon).
> SELECT h3_try_coverash3('{"type":"MultiPoint","coordinates":[]}', 2)
null

-- Feeding an invalid WKB (invalid endianness value)
> SELECT h3_try_coverash3(unhex('020700000000'), 2)
null

-- Feeding an invalid polygon in WKT (polygon is not closed)
> SELECT h3_try_coverash3('POLYGON((-122.4194 37.7749,-118.2437 34.0522,-74.0060 40.7128,-74.0060 40.7128))', 2)
null

-- Resolution is out of range.
> SELECT h3_try_coverash3('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