Bagikan melalui


geo_polygon_to_h3cells()

Mengonversi poligon ke sel H3. Fungsi ini adalah alat gabungan dan visualisasi geospasial yang berguna.

Sintaks

geo_polygon_to_h3cells(polygon [, resolution[, radius]])

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
polygon dynamic ✔️ Poligon atau multipoligon dalam format GeoJSON.
resolusi int Menentukan resolusi sel yang diminta. Nilai yang didukung berada dalam rentang [0, 15]. Jika tidak ditentukan, nilai default 6 akan digunakan.
radius real Radius buffer dalam meter. Jika tidak ditentukan, nilai default 0 akan digunakan.

Mengembalikan

Array string token sel H3 dengan resolusi yang sama yang merepreset poligon atau multipoligon. Jika radius diatur ke nilai positif, maka poligon akan diperbesar sehingga semua titik dalam radius tertentu dari poligon input atau multipoligon akan terkandung di dalam dan poligon yang baru dihitung yang akan dikonversi ke sel H3. Jika poligon, resolusi, radius tidak valid, atau jumlah sel melebihi batas, kueri akan menghasilkan hasil null.

Catatan

  • Mengonversi poligon ke token sel H3 dapat berguna dalam mencocokkan koordinat ke poligon yang mungkin mencakup koordinat ini dan mencocokkan poligon ke poligon.
  • Jumlah maksimum token per poligon adalah 61680.
  • Tepi poligon adalah garis lurus.
  • Poligon diwakili oleh sel-sel yang sentroidnya berada di dalam poligon. Ini berarti bahwa sel-sel tidak sama persis dengan poligon, tetapi mereka semakin dekat saat resolusi meningkat. Untuk memastikan bahwa setiap titik dalam poligon ditutupi oleh sel, poligon dapat di-buffer. Ini juga memastikan bahwa poligon tetangga yang saling menyentuh akan memiliki sel terpisah, sehingga tidak ada sel yang termasuk dalam lebih dari satu poligon.

Seel juga geo_polygon_to_s2cells().

Contoh

Contoh berikut menghitung sel H3 yang memperkirakan poligon.

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)

Hasil

h3_cells
["86390cb57ffffff","86390cb0fffffff","86390ca27ffffff","86390cb87ffffff","86390cb07ffffff","86390ca2fffffff","86390cb07ffffff","86390cb07ffffff","86390ca2fffffff","86390ca37ffffff","86390cb17ffffff","86390cb1fffffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffff"]

Contoh berikut menunjukkan multipoligon yang terdiri dari sel H3 yang perkiraan poligon di atas. Menspesifikasikan resolusi yang lebih tinggi akan meningkatkan perkiraan poligon.

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)

Hasil

multipoligon
{"type": "MultiPolygon",
"coordinates": [ ... ]}

Contoh berikut mengembalikan null karena poligon tidak valid.

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

Hasil

is_null
Benar