h3
CORE
H3 is Uber’s Hexagonal Hierarchical Spatial Index. Full documentation of the project can be found at h3geo. You can also learn more about H3 in the Spatial Indexes section of this documentation.
H3_BOUNDARY
H3_BOUNDARY(index)
Description
Returns a geography representing the H3 cell. It will return null
on error (invalid input).
index
:STRING
The H3 cell index.
Return type
GEOGRAPHY
Example
SELECT `carto-un`.carto.H3_BOUNDARY('84390cbffffffff');
-- POLYGON((-3.57692743539573 40.6134385959352, -3.85975632308016 ...
H3_CENTER
H3_CENTER(index)
Description
Returns the center of the H3 cell as a GEOGRAPHY point. It will return null
on error (invalid input).
index
:STRING
The H3 cell index.
Return type
GEOGRAPHY
Example
SELECT `carto-un`.carto.H3_CENTER('84390cbffffffff');
-- POINT(-3.61760324662829 40.3725405821658)
H3_COMPACT
H3_COMPACT(indexArray)
Description
Returns an array with the indexes of a set of hexagons across multiple resolutions that represent the same area as the input set of hexagons.
indexArray
:ARRAY<STRING>
of H3 cell indices of the same resolution.
Return type
ARRAY<STRING>
Example
SELECT `carto-un`.carto.H3_COMPACT(['85390ca3fffffff', '85390ca7fffffff', '85390cabfffffff', '85390caffffffff', '85390cb3fffffff', '85390cb7fffffff', '85390cbbfffffff']);
-- 84390cbffffffff
H3_DISTANCE
H3_DISTANCE(origin, destination)
Description
Returns the grid distance between two hexagon indexes. This function may fail to find the distance between two indexes if they are very far apart or on opposite sides of a pentagon. Returns null
on failure or invalid input.
origin
:STRING
origin H3 cell index.destination
:STRING
destination H3 cell index.
Return type
INT64
Example
SELECT `carto-un`.carto.H3_DISTANCE('84390c1ffffffff', '84390cbffffffff');
-- 1
H3_FROMGEOGPOINT
H3_FROMGEOGPOINT(point, resolution)
Description
Returns the H3 cell index that the point belongs to in the required resolution
. It will return null
on error (invalid geography type or resolution out of bounds).
point
:GEOGRAPHY
point to get the H3 cell from.resolution
:INT64
number between 0 and 15 with the H3 resolution.
Return type
STRING
Example
SELECT `carto-un`.carto.H3_FROMGEOGPOINT(ST_GEOGPOINT(-3.7038, 40.4168), 4);
-- 84390cbffffffff
H3_FROMLONGLAT
H3_FROMLONGLAT(longitude, latitude, resolution)
Description
Returns the H3 cell index that the point belongs to in the required resolution
. It will return null
on error (resolution out of bounds).
longitude
:FLOAT64
horizontal coordinate of the map.latitude
:FLOAT64
vertical coordinate of the map.resolution
:INT64
number between 0 and 15 with the H3 resolution.
Return type
STRING
Example
SELECT `carto-un`.carto.H3_FROMLONGLAT(-3.7038, 40.4168, 4);
-- 84390cbffffffff
H3_HEXRING
H3_HEXRING(origin, size)
Description
Returns all cell indexes in a hollow hexagonal ring centered at the origin in no particular order. Unlike H3_KRING, this function will throw an exception if there is a pentagon anywhere in the ring.
origin
:STRING
H3 cell index of the origin.size
:INT64
size of the ring (distance from the origin).
Return type
ARRAY<STRING>
Example
SELECT `carto-un`.carto.H3_HEXRING('84390cbffffffff', 1);
-- 84392b5ffffffff
-- 84390c9ffffffff
-- 84390c1ffffffff
-- 84390c3ffffffff
-- 84390ddffffffff
-- 84392b7ffffffff
H3_INT_TOSTRING
H3_INT_TOSTRING(index)
Description
Converts the integer representation of the H3 index to the string representation.
index
:INT64
The H3 cell index.
Return type
STRING
Example
SELECT `carto-un`.carto.H3_INT_TOSTRING(595478781590765567);
-- 84390cbffffffff
H3_ISPENTAGON
H3_ISPENTAGON(index)
Description
Returns true
if given H3 index is a pentagon. Returns false
otherwise, even on invalid input.
index
:STRING
The H3 cell index.
Return type
BOOLEAN
Example
SELECT `carto-un`.carto.H3_ISPENTAGON('84390cbffffffff');
-- false
SELECT `carto-un`.carto.H3_ISPENTAGON('8075fffffffffff');
-- true
H3_ISVALID
H3_ISVALID(index)
Description
Returns true
when the given index is a valid H3 index, false
otherwise.
index
:STRING
The H3 cell index.
Return type
BOOLEAN
Examples
SELECT `carto-un`.carto.H3_ISVALID('84390cbffffffff');
-- true
SELECT `carto-un`.carto.H3_ISVALID('1');
-- false
H3_KRING
H3_KRING(origin, size)
Description
Returns all cell indexes in a filled hexagonal k-ring centered at the origin in no particular order.
origin
:STRING
H3 cell index of the origin.size
:INT64
size of the ring (distance from the origin).
Return type
ARRAY<STRING>
Example
SELECT `carto-un`.carto.H3_KRING('84390cbffffffff', 1);
-- 84390cbffffffff
-- 84390c9ffffffff
-- 84390c1ffffffff
-- 84390c3ffffffff
-- 84390ddffffffff
-- 84392b7ffffffff
-- 84392b5ffffffff
H3_KRING_DISTANCES
H3_KRING_DISTANCES(origin, size)
Description
Returns all cell indexes and their distances in a filled hexagonal k-ring centered at the origin in no particular order.
origin
:STRING
H3 cell index of the origin.size
:INT64
size of the ring (distance from the origin).
Return type
ARRAY<STRUCT<index STRING, distance INT64>>
Example
SELECT `carto-un`.carto.H3_KRING_DISTANCES('84390cbffffffff', 1);
-- {"index": "84390cbffffffff", "distance": "0"}
-- {"index": "84390c9ffffffff", "distance": "1"}
-- {"index": "84390c1ffffffff", "distance": "1"}
-- {"index": "84390c3ffffffff", "distance": "1"}
-- {"index": "84390ddffffffff", "distance": "1"}
-- {"index": "84392b7ffffffff", "distance": "1"}
-- {"index": "84392b5ffffffff", "distance": "1"}
H3_POLYFILL
H3_POLYFILL(geography, resolution)
Description
Returns an array with all the H3 cell indexes with centers contained in a given polygon. It will return null
on error (invalid geography type or resolution out of bounds). In case of lines, it will return the H3 cell indexes intersecting those lines. For a given point, it will return the H3 index of cell in which that point is contained.
geography
:GEOGRAPHY
representing the area to cover.resolution
:INT64
number between 0 and 15 with the H3 resolution.
Return type
ARRAY<STRING>
Example
SELECT `carto-un`.carto.H3_POLYFILL(
ST_GEOGFROMTEXT('POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'), 4);
-- 846b26bffffffff
-- 843e8b1ffffffff
-- 842d1e5ffffffff
-- 843ece5ffffffff
-- ...
H3_RESOLUTION
H3_RESOLUTION(index)
Description
Returns the H3 cell resolution as an integer. It will return null
on error (invalid input).
index
:STRING
The H3 cell index.
Return type
INT64
Example
SELECT `carto-un`.carto.H3_RESOLUTION('84390cbffffffff');
-- 4
H3_STRING_TOINT
H3_STRING_TOINT(index)
Description
Converts the string representation of the H3 index to the integer representation.
index
:STRING
The H3 cell index.
Return type
INT64
Example
SELECT `carto-un`.carto.H3_STRING_TOINT('84390cbffffffff');
-- 595478781590765567
H3_TOCHILDREN
H3_TOCHILDREN(index, resolution)
Description
Returns an array with the H3 indexes of the children/descendents of the given hexagon at the given resolution.
index
:STRING
The H3 cell index.resolution
:INT64
number between 0 and 15 with the H3 resolution.
Return type
ARRAY<STRING>
Example
SELECT `carto-un`.carto.H3_TOCHILDREN('83390cfffffffff', 4);
-- 84390c1ffffffff
-- 84390c3ffffffff
-- 84390c5ffffffff
-- 84390c7ffffffff
-- 84390c9ffffffff
-- 84390cbffffffff
-- 84390cdffffffff
H3_TOPARENT
H3_TOPARENT(index, resolution)
Description
Returns the H3 cell index of the parent of the given hexagon at the given resolution.
index
:STRING
The H3 cell index.resolution
:INT64
number between 0 and 15 with the H3 resolution.
Return type
STRING
Example
SELECT `carto-un`.carto.H3_TOPARENT('84390cbffffffff', 3);
-- 83390cfffffffff
H3_UNCOMPACT
H3_UNCOMPACT(indexArray, resolution)
Description
Returns an array with the H3 indexes of a set of hexagons of the same resolution
that represent the same area as the compacted input hexagons.
indexArray
:ARRAY<STRING>
of H3 cell indices.resolution
:INT64
number between 0 and 15 with the H3 resolution.
Return type
ARRAY<STRING>
Example
SELECT `carto-un`.carto.H3_UNCOMPACT(['83390cfffffffff'], 5);
-- 85390ca3fffffff
-- 85390ca7fffffff
-- 85390cabfffffff
-- 85390caffffffff
-- 85390cb3fffffff
-- 85390cb7fffffff
-- 85390cbbfffffff
This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 960401.
Last updated
Was this helpful?