geo_polygon_to_h3cells()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Konwertuje wielokąt na komórki H3. Ta funkcja jest przydatnym narzędziem do sprzężenia geoprzestrzennego i wizualizacji.
Składnia
geo_polygon_to_h3cells(
wielokąt [,
rozdzielczość[,
promień]])
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
wielokąt | dynamic |
✔️ | Wielokąt lub multipolygon w formacie GeoJSON. |
rezolucja | int |
Definiuje żądaną rozdzielczość komórki. Obsługiwane wartości znajdują się w zakresie [0, 15]. Jeśli nie określono, zostanie użyta wartość 6 domyślna. |
|
promień | real |
Promień buforu w metrach. Jeśli nie określono, zostanie użyta wartość 0 domyślna. |
Zwraca
Tablica ciągów tokenu komórki H3 tej samej rozdzielczości, która przedstawia wielokąt lub wielopolygon. Jeśli promień jest ustawiony na wartość dodatnią, wielokąt zostanie powiększony tak, aby wszystkie punkty w danym promieniu wielokąta wejściowego lub wielopolygonu znajdowały się wewnątrz i nowo obliczony wielokąt, który zostanie przekonwertowany na komórki H3. Jeśli wielokąt, rozdzielczość, promień jest nieprawidłowy lub liczba komórek przekracza limit, zapytanie spowoduje wygenerowanie wyniku o wartości null.
Uwaga
- Konwertowanie wielokąta na tokeny komórek H3 może być przydatne w dopasowywaniu współrzędnych do wielokątów, które mogą obejmować te współrzędne i pasujące wielokąty do wielokątów.
- Maksymalna liczba tokenów na wielokąt wynosi 61680.
- Krawędzie wielokątne są liniami prostymi.
- Wielokąt jest reprezentowany przez komórki, których centroidy znajdują się wewnątrz wielokąta. Oznacza to, że komórki nie są dokładnie takie same jak wielokąt, ale zbliżają się do wzrostu rozdzielczości. Aby upewnić się, że każdy punkt w wielokącie jest objęty komórką, wielokąt może być buforowany. Gwarantuje to również, że sąsiadujące wielokąty, które dotykają siebie nawzajem, będą miały oddzielne komórki, więc żadna komórka nie będzie należeć do więcej niż jednego wielokąta.
Seel również geo_polygon_to_s2cells().
Przykłady
Poniższy przykład oblicza komórki H3, które przybliżą wielokąt.
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)
Wyjście
h3_cells |
---|
["86390cb57ff","86390cb0fff","86390ca27ff","86390cb87ff","86390cb07ff","86390ca2fff","863900ca37ff","86390cb17ff","86390cb1fff","86390cb8fff","86390cba7ff","86390ca07ff","86390cbafff"] |
W poniższym przykładzie pokazano wielopolygon składający się z komórek H3, które przybliżyły powyższy wielokąt. Określenie wyższej rozdzielczości poprawi przybliżenie wielokąta.
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)
Wyjście
multipolygon |
---|
{"type": "MultiPolygon", "współrzędne": [ ... ]} |
Poniższy przykład zwraca wartość null, ponieważ wielokąt jest nieprawidłowy.
let polygon = dynamic({"type":"Polygon","coordinates":[[[0,0],[1,1]]]});
print is_null = isnull(geo_polygon_to_h3cells(polygon))
Wyjście
is_null |
---|
Prawda |