geo_polygon_to_h3cells()

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 o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
Wielokąt dynamic ✔️ Wielokąt lub multipolygon w formacie GeoJSON.
Rozdzielczość int Definiuje żądaną rozdzielczość komórki. Obsługiwane wartości znajdują się w zakresie [0, 15]. Jeśli nie zostanie określona, zostanie użyta wartość 6 domyślna.
Promień real Promień buforu w metrach. Jeśli nie zostanie określona, 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 multipolygon. 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 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 pokryty komórką, wielokąt można buforować. 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)

Dane wyjściowe

h3_cells
["86390cb57ffffffff","86390cb0fff","86390ca27ff","86390cb87ff","86390cb07ff","86390ca2fff","863900ca37ffffff","86390cb17ff","86390cb1fff","86390cb8fff","86390cba7ff","86390ca07ff","86390cbafff"]

W poniższym przykładzie pokazano wielokąt, który składa się z komórek H3, które przybliżą 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)

Dane wyjściowe

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))

Dane wyjściowe

is_null
Prawda