Share via


geo_polygon_to_h3cells()

Convierte el polígono en celdas H3. Esta función es una herramienta de visualización y combinación geoespacial útil.

Syntax

geo_polygon_to_h3cells(polígono [,resolution[,radius]])

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
Polígono dynamic ✔️ Polígono o multipolygon en formato GeoJSON.
Resolución int Define la resolución de celda solicitada. Los valores admitidos están en el intervalo [0, 15]. Si no se especifica, se usa el valor predeterminado 6.
Radio real Radio de búfer en metros. Si no se especifica, se usa el valor predeterminado 0.

Devoluciones

Matriz de cadenas de token de celda H3 de la misma resolución que represetiza un polígono o un multipolygon. Si el radio se establece en un valor positivo, el polígono se ampliará de forma que todos los puntos dentro del radio especificado del polígono de entrada o multipolygon se incluirán dentro y el polígono recién calculado que se convertirá en celdas H3. Si el polígono, la resolución, el radio no es válido o el número de celdas supera el límite, la consulta generará un resultado nulo.

Nota

  • La conversión de polígonos a tokens de celda H3 puede ser útil en la coincidencia de coordenadas con polígonos que podrían incluir estas coordenadas y polígonos coincidentes en polígonos.
  • El recuento máximo de tokens por polígono es 61680.
  • Los bordes de polígono son líneas rectas.
  • Un polígono se representa mediante las celdas cuyos centroide están dentro del polígono. Esto significa que las celdas no son exactamente iguales que el polígono, pero se acercan a medida que aumenta la resolución. Para asegurarse de que todos los puntos del polígono están cubiertos por una celda, el polígono se puede almacenar en búfer. Esto también garantiza que los polígonos vecinos que se toquen entre sí tendrán celdas independientes, por lo que ninguna celda pertenecerá a más de un polígono.

Seel también geo_polygon_to_s2cells().

Ejemplos

En el ejemplo siguiente se calculan las celdas H3 que se aproximan al polígono.

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)

Salida

h3_cells
["86390cb57ffffff","86390cb0fffff","86390ca27ffffff","86390cb87ffffff","86390cb07ffffff","86390ca2fffff","86390ca37ffffff","86390cb17ffffff","86390cb1fffff","86390cb8fffffff","86390cba7ffffff","86390ca07ffffff","86390cbafffffff"]

En el ejemplo siguiente se muestra un multipolygon que consta de celdas H3 que se aproximan al polígono anterior. Si se especifica una resolución superior, se mejorará la aproximación del polígono.

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)

Salida

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

En el ejemplo siguiente se devuelve null porque el polígono no es válido.

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

Salida

is_null
True