Udostępnij za pośrednictwem


geo_polygon_to_h3cells()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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