geo_polygon_to_h3cells()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Wandelt Polygone in H3-Zellen um. Diese Funktion ist ein nützliches Tool für geospatiale Verknüpfungen und Visualisierungen.
Syntax
geo_polygon_to_h3cells(
Polygon [,
Auflösung[,
Radius]])
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
Polygon | dynamic |
✔️ | Polygon oder Multipolygon im GeoJSON-Format. |
Auflösung | int |
Definiert die angeforderte Zellenauflösung. Unterstützte Werte befinden sich 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 derselben Auflösung, die ein Polygon oder ein Multipolygon neu festlegen. Wenn der Radius auf einen positiven Wert festgelegt ist, wird das Polygon so vergrößert, dass alle Punkte innerhalb des angegebenen Radius des Eingabe polygons oder Multipolygons innerhalb und das neu berechnete Polygon enthalten sind, das in H3-Zellen konvertiert wird. Wenn Polygon, Auflösung, Radius ungültig ist oder die Zellanzahl den Grenzwert überschreitet, erzeugt die Abfrage ein NULL-Ergebnis.
Hinweis
- Das Konvertieren von Polygonen in H3-Zelltoken kann bei der Übereinstimmung von Koordinaten in Polygone hilfreich sein, die diese Koordinaten und übereinstimmende Polygone zu 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 Schwerpunkte sich innerhalb des Polygons befinden. Dies bedeutet, dass die Zellen nicht genau mit dem Polygon identisch sind, aber sie werden näher, da 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 einander berühren, separate Zellen aufweisen, sodass keine Zelle zu mehreren Polygonen gehört.
Siehe auch geo_polygon_to_s2cells().
Beispiele
Im folgenden Beispiel werden H3-Zellen berechnet, die das Polygon annähern.
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)
Output
h3_cells |
---|
["86390cb57ffffff","86390cb0fffffff","86390ca27ffffff","86390cb87ffffff","86390cb07ffffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffffff","86390cb1fff","86390cb8fffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffffff"] |
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)
Output
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))
Output
is_null |
---|
True |