Funktionen h3_tessellateaswkb
Gäller för: Databricks SQL
Databricks Runtime 14.2 och senare
Returnerar en tessellation av indataområdet med H3-celler vid den angivna upplösningen. Tessellationen representeras av en MATRIS med structs, som var och en representerar ett element i tessellationen. Varje element i tessellationen består av ett H3-cell-ID (representerat som ett långt heltal), ett booleskt värde som anger om indatageografin helt täcker cellen och ett BINÄRt värde som motsvarar WKB-beskrivningen av skärningspunkten för indatageografin med H3-cellen.
De returnerade H3-cellerna bildar tillsammans en minimal täckande uppsättning sexhörningar eller femhörningar, vid den angivna upplösningen, som helt täcker den givna geografin. De geografiska områden som returneras (via deras WKB-representationer ) utgör en tessellation av indatageografin.
Syntax
h3_tessellateaswkb ( geographyExpr, resolutionExpr )
Argument
-
geographyExpr
: Ett BINÄRt uttryck eller STRING-uttryck som representerar ett geografiskt område i WKB, WKT eller GeoJSON. Geografin förväntas ha longitud- och latitudkoordinater i grader som refererar till WGS84-koordinatreferenssystemet . -
resolutionExpr
: Ett INT-uttryck, med ett värde mellan0
och15
inkluderande, som anger upplösningen för H3-cell-ID:t.
Returer
En MATRIS med namngivna structs med tre fält av typen BIGINT, BOOLEAN och BINARY med namnet cellid
, core
respektive chip
, som representerar tessellationen för indataområdet med H3-celler vid den angivna upplösningen.
Det första fältet i structen är ett H3-cell-ID (representerat som ett långt heltal). Det andra fältet i structen är ett booleskt värde som anger om H3-cellen är en kärncell, i vilket fall fältets värde är true
eller inte, i vilket fall fältets värde är false
. En kärncell är en H3-cell som är helt täckt av indatageografin (d.v.s. dess skärningspunkt med indatageografin är själva cellen). Det tredje fältet är ett BINÄRt värde som representerar WKB-beskrivningen av geografin som är skärningspunkten mellan indataområdet och H3-cellen. De returnerade H3-cellerna utgör tillsammans en minimal täckande uppsättning av ingångsgeografin. Geografiska områden, som motsvarar de returnerade WKB-beskrivningarna, bildar tillsammans en tessellation (nedbrytning) av indatageografin.
Funktionen returnerar NULL
om något av indatauttrycken är NULL
.
Om det första indataargumentet är av typen BINARY förväntas indatavärdet vara WKB-beskrivningen av en punkt, linjering, polygon, multipoint, multilinestring eller multipolygon.
Om det första indataargumentet är av typen STRING förväntas indatavärdet antingen vara WKT- eller GeoJSON-beskrivningen för en punkt, linjering, polygon, multipoint, multilinestring eller multipolygon.
Dimensionen för indatageografin kan vara 2D, 3DZ, 3DM eller 4D.
Feltillstånd
- Om
geographyExpr
är av typen BINÄR och värdet antingen är en ogiltig WKB eller representerar en geometrisamling returnerar funktionen WKB_PARSE_ERROR. - Om
geographyExpr
är av typen STRING och värdet antingen är en ogiltig WKT eller representerar en geometrisamling, returnerar funktionen WKT_PARSE_ERROR. - Om
geographyExpr
är av typen STRING och värdet antingen är en ogiltig GeoJSON eller representerar en geometrisamling, returnerar funktionen GEOJSON_PARSE_ERROR. - Om
resolutionExpr
är mindre än0
eller större än15
returnerar funktionen H3_INVALID_RESOLUTION_VALUE.
Exempel
> 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