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.