Статьи
Полезные ресурсы Программирование

Библиотека H3 от Uber — инструмент для превращения геоданных в шестиугольники

Время прочтения: 3 минуты
Источник: https://h3geo.org/docs/core-library/restable/
H3 — это шестиугольная система геопространственного индексирования, разработанная компанией Uber. Она позволяет разбивать земную поверхность на шестиугольники различных размеров и агрегировать в них данные, что помогает эффективно визуализировать геоданные и проводить их быстрый анализ.
Агрегирование точек в шестиугольники. Источник: https://www.uber.com/en-UA/blog/h3/

Отличие H3 от простой гексагональной сетки

При использовании обычной гексагональной сетки ее строение и расположение будет зависеть от набора данных. Если создавать сетки для нескольких наборов данных с разным пространственным охватом, будут созданы геометрически разные сетки, которые сложно сравнивать друг с другом.
Библиотека H3 решает этот вопрос — создает единую иерархическую систему с фиксированным расположением шестиугольной сетки. Визуализацию этим способом можно использовать для анализа и сопоставления любых пространственных данных из-за единого формата расположения ячеек.
Каждая шестиугольная ячейка имеет семь дочерних ячеек ниже по иерархии. Всего поддерживается одиннадцать уровней вложенности.
Несколько уровней гексагонов библиотеки H3. Источник: https://www.esri.com/arcgis-blog/products/bus-analyst/analytics/using-uber-h3-hexagons-arcgis-business-analyst-pro/

Какие еще функции есть у библиотеки H3

Преобразование координат

Библиотека может преобразовывать географические координаты (широта и долгота) в идентификаторы H3 и делать обратную операцию.

Поиск ближайших объектов.

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

Оптимизация маршрутов.

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

Нахождение геометрии ячеек

С H3 можно найти центр ячейки, граничную геометрию, соседей ячейки и определить другие геометрические функции.

Для чего пригодится библиотека H3

  • Геопространственная индексация
  • Объединение точечных данных для дальнейшего анализа
  • Моделирование потоков и перемещений
  • Подготовка данных для машинного обучения
Главный плюс библиотеки — удобство и скорость.

Как использовать библиотеку H3

Библиотека написана на языке C, но может использоваться и в Python, R, SQL, и даже через плагин QGIS. В QGIS и SQL надо заморочиться, а вот с Python проще всего: можно использовать библиотеку h3pandas или h3-py.

Пример использования библиотеки h3pandas

Сначала загружаем набор точечных данных с помощью библиотеки pandas. Обязательно должны быть колонки lat,lng в проекции 4326. Далее применим функцию geo_to_h3 и в скобках укажем размер гексагона:
На выходе получаем индекс каждого гексагона и количество точек, которые в него попадают.
С помощью функции h3_to_geo boundary можно добавить геометрию гексагона:
А после этого визуализировать:
Если нужно разрешение ниже, то функция h3_to_parent найдет индекс родительского гексагона. Другие примеры использования – на сайте H3-Pandas.
Таким образом, с помощью одной команды с библиотекой H3 мы получаем агрегированные по гексагонам данные. Эти геоданные можно выгрузить и проводить дальнейший анализ в QGIS или продолжить работу с библиотеками Python.
Автор: Анна Пикулева