Поделиться через


geo_polygon_to_h3cells()

Преобразует многоугольник в ячейки H3. Эта функция является полезным инструментом геопространственного соединения и визуализации.

Синтаксис

geo_polygon_to_h3cells(многоугольник [, разрешение[, радиус]])

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
многоугольник dynamic ✔️ Многоугольник или многополигон в формате GeoJSON.
резолюция int Определяет запрошенные разрешения ячеек. Поддерживаемые значения находятся в диапазоне [0, 15]. Если не задано, по умолчанию используется значение 6.
радиус real Радиус буфера в метрах. Если не задано, по умолчанию используется значение 0.

Возвраты

Массив строк маркеров ячейки H3 с одинаковым разрешением, который перенастроит многоугольник или многополигон. Если радиус имеет положительное значение, то многоугольник будет увеличен таким образом, что все точки в заданном радиусе входного многоугольника или многоугольника будут содержаться внутри и вновь вычисляемый многоугольник, который будет преобразован в ячейки H3. Если многоугольник, разрешение, радиус недопустим, или число ячеек превышает ограничение, запрос создаст пустой результат.

Примечание.

  • Преобразование многоугольников в маркеры ячеек H3 может быть полезно в сопоставлении координат с многоугольниками, которые могут включать эти координаты и соответствующие многоугольники с многоугольниками.
  • Максимальное количество маркеров на многоугольник составляет 61680.
  • Края многоугольника являются прямыми линиями.
  • Многоугольник представлен ячейками, центроиды которых находятся внутри многоугольника. Это означает, что ячейки не совсем совпадают с многоугольником, но они становятся ближе по мере увеличения разрешения. Чтобы убедиться, что каждая точка в многоугольнике охватывается ячейкой, многоугольник может быть буферирован. Это также гарантирует, что соседние многоугольники, касающиеся друг друга, будут иметь отдельные ячейки, поэтому ни одна ячейка не будет принадлежать нескольким многоугольникам.

Seel также geo_polygon_to_s2cells().

Примеры

В следующем примере вычисляется ячейки H3, приблизительные к многоугольнику.

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)

Выходные данные

h3_cells
["86390cb57ffffff","86390cb0fffff","86390ca27ff","86390cb87ff","86390cb07ffff","86390ca2fff","86390ca2fff","86390ffca37ff","86390cb17ff","86390cb1fff","86390cb8fff","86390cba7ff","86390ca07ffff","86390cbafffffff"]

В следующем примере показан многоугольник, состоящий из ячеек H3, приблизительных к приведенному выше многоугольнику. Определение более высокого разрешения повышает приближение многоугольников.

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)

Выходные данные

multipolygon
{"type": "MultiPolygon",
"координаты": [ ... ]}

В следующем примере возвращается значение NULL, так как многоугольник недопустим.

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

Выходные данные

is_null
Истина