geo_polygon_to_h3cells()

Konvertiert Polygone in H3-Zellen. Diese Funktion ist ein nützliches Geo-Join- und Visualisierungstool.

Syntax

geo_polygon_to_h3cells(Polygon [,Auflösung[,Radius]])

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
Polygon dynamic ✔️ Polygon oder Multipolygon im GeoJSON-Format.
Auflösung int Definiert die angeforderte Zellauflösung. Unterstützte Werte liegen im Bereich [0, 15]. Wenn nichts angegeben wird, wird der Standardwert 6 verwendet.
Radius real Pufferradius in Metern. Wenn nichts angegeben wird, wird der Standardwert 0 verwendet.

Gibt zurück

Array von H3-Zelltokenzeichenfolgen der gleichen Auflösung, die ein Polygon oder ein Multipolygon vorschreiben. Wenn radius auf einen positiven Wert festgelegt ist, wird das Polygon so vergrößert, dass alle Punkte innerhalb des angegebenen Radius des Eingabepolygons oder multipolygons und des neu berechneten Polygons enthalten sind, das in H3-Zellen konvertiert wird. Wenn Polygon, Auflösung, Radius ungültig sind oder die Zellanzahl den Grenzwert überschreitet, erzeugt die Abfrage ein NULL-Ergebnis.

Hinweis

  • Das Konvertieren von Polygonen in H3-Zellentoken kann nützlich sein, um Koordinaten mit Polygonen abzugleichen, die diese Koordinaten und übereinstimmende Polygone mit Polygonen enthalten können.
  • Die maximale Anzahl von Token pro Polygon beträgt 61680.
  • Polygonränder sind gerade Linien.
  • Ein Polygon wird durch die Zellen dargestellt, deren Kerne sich innerhalb des Polygons befinden. Dies bedeutet, dass die Zellen nicht genau identisch mit dem Polygon sind, aber sie nähern sich, wenn die Auflösung zunimmt. Um sicherzustellen, dass jeder Punkt im Polygon von einer Zelle abgedeckt wird, kann das Polygon gepuffert werden. Dadurch wird auch sichergestellt, dass benachbarte Polygone, die sich berühren, separate Zellen haben, sodass keine Zelle zu mehr als einem Polygon gehört.

Siehe auch geo_polygon_to_s2cells().

Beispiele

Im folgenden Beispiel werden H3-Zellen berechnet, die dem Polygon ungefähren.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)

Ausgabe

h3_cells
["86390cb57ffffff","86390cb0fffffffff","86390ca27ffffffff","86390cb87ffff","86390cb07ffffff","86390ca2fffffff","86390ca37ffffffff","86390cb17ffffff","86390cb1fffffffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffff"]

Im folgenden Beispiel wird ein Multipolygon veranschaulicht, das aus H3-Zellen besteht, die dem obigen Polygon annähern. Durch die Angabe einer höheren Auflösung wird die Polygonannäherung verbessert.

let polygon = dynamic({"type":"Polygon","coordinates":[[[-3.659,40.553],[-3.913,40.409],[-3.729,40.273],[-3.524,40.440],[-3.659,40.553]]]});
print h3_cells = geo_polygon_to_h3cells(polygon)
| mv-expand cell = h3_cells to typeof(string) // extract cell to a separate row
| project polygon_cell = geo_h3cell_to_polygon(cell) // convert each cell to a polygon
| project individual_polygon_coordinates = pack_array(polygon_cell.coordinates)
| summarize multipolygon_coordinates = make_list(individual_polygon_coordinates)
| project multipolygon = bag_pack("type","MultiPolygon", "coordinates", multipolygon_coordinates)

Ausgabe

Multipolygon
{"type": "MultiPolygon",
"koordinaten": [ ... ]}

Im folgenden Beispiel wird NULL zurückgegeben, da das Polygon ungültig ist.

let polygon = dynamic({"type":"Polygon","coordinates":[[[0,0],[1,1]]]});
print is_null = isnull(geo_polygon_to_h3cells(polygon))

Ausgabe

is_null
True