Skip to main content
В этом руководстве вы узнаете, как использовать ClickHouse для работы с геоданными на примере набора данных о базовых станциях сотовой связи. Вы загрузите набор данных в ClickHouse Cloud, изучите его схему и выполните агрегирующие запросы по десяткам миллионов строк. Затем вы обогатите данные с помощью словаря, подсчитаете число вышек на территории Германии с помощью функции pointInPolygon и визуализируете результат на карте с помощью ClickHouse Agents.

Предварительные требования

Для этого руководства вам понадобятся:
1

Загрузите тестовые данные

Набор данных, используемый в этом руководстве, взят из — крупнейшей в мире открытой базы данных базовых станций сотовой связи. По состоянию на 2021 год в нём содержатся десятки миллионов записей о базовых станциях сотовой связи по всему миру — с географическими координатами и метаданными, такими как код страны и сеть.
  1. В ClickHouse Cloud в меню слева выберите свой сервис в выпадающем списке
  2. Выберите Data sources
  3. Нажмите на карточку Add sample data
  4. Выберите набор данных Cell Towers (1.1 GB)
  5. Укажите default в качестве базы данных назначения и нажмите Import dataset
В разделе Data upload history должна появиться запись со статусом success
2

Изучите схему

  1. Выберите SQL console в меню слева
  2. Нажмите на вкладку + рядом со значком домашней страницы, чтобы создать новый запрос
  3. В редакторе SQL введите следующий запрос и нажмите Run:
Должна отобразиться следующая таблица результатов:
Каждая запись в таблице соответствует вышке сотовой связи, реально существующей на Земле; её местоположение задаётся координатами lon и lat.
3

Выполните простые запросы

Выполните следующий запрос, чтобы узнать количество базовых станций сотовой связи в разбивке по типам:
Далее посчитайте количество базовых станций сотовой связи в разбивке по мобильному коду страны (MCC):
Как видно, больше всего базовых станций сотовой связи в странах с кодами MCC 310, 262 и 250. Чтобы заменить числовые значения столбца mcc названиями стран, можно воспользоваться словарём:
Теперь, когда словарь создан, с его помощью можно получить тот же список, дополнив MCC названием страны:
Query
Response
4

Добавьте геоданные

Возможно, вам также будет интересно узнать, сколько базовых станций сотовой связи находится в пределах определённой географической области. Для решения такой задачи в ClickHouse есть множество полезных геофункций, например функция pointInPolygon.Предположим, вы хотите узнать, сколько базовых станций сотовой связи находится на территории Германии. Создайте таблицу germany с одним столбцом типа polygon:
Теперь вставьте в таблицу координаты контура Германии (без островов):
Теперь с помощью функции pointInPolygon можно узнать, сколько базовых станций сотовой связи находится на материковой части Германии:
Query
Response
5

Необязательно: визуализация данных с помощью ClickHouse Agents

Далее визуализируем эти данные. Это необязательный пример: ClickHouse Agents — функциональность в статусе бета, работающая на основе модели, поэтому план, трассировка вызовов инструментов и результат могут отличаться от запуска к запуску. ClickHouse Agents позволяет легко выполнять запросы к данным ClickHouse и исследовать их в формате диалога — без необходимости самостоятельно писать SQL или логику оркестрации. Агент определяет ваше намерение, планирует шаги, вызывает настроенные вами инструменты и возвращает результаты.Чтобы открыть ClickHouse Agents, нажмите ClickHouse agents под названием вашей организации в нижней части левого меню. Отправлять сообщения ClickHouse Agent можно через чат. Введите «Visualize cell towers within Germany on a map using the default.cell_towers and default.germany tables» и отправьте сообщение. В одном из запусков агент выполнил следующие шаги:
  • Нашёл в mcc_country_dict мобильный код страны (MCC) для Германии — 262.
  • С помощью pointInPolygon подсчитал базовые станции с mcc = 262, попадающие внутрь полигона из germany, — получилось 2 588 635 станций. Это немного меньше, чем в подсчёте выше, поскольку дополнительный фильтр по mcc исключает станции внутри полигона, зарегистрированные в другой стране.
  • Вместо того чтобы отображать 2,6 миллиона отдельных точек, сгруппировал станции в сетку 0,1° на 0,1°, округлив lon и lat, — получилась 4 821 ячейка. Затем проверил, что сумма значений по ячейкам в точности равна 2 588 635, то есть при группировке ничего не потерялось и не было учтено дважды.
  • Получил полигон из germany и нарисовал его контур поверх сетки, используя логарифмическую цветовую шкалу, чтобы были видны как плотные городские, так и разреженные сельские ячейки.
Откройте сгенерированный файл, чтобы увидеть результат. Яркие скопления — это крупнейшие агломерации: Берлин, Гамбург, Мюнхен и Франкфурт.

Дальнейшие шаги

В этом руководстве вы загрузили набор данных о базовых станциях сотовой связи OpenCelliD в ClickHouse Cloud, изучили его схему и выполнили агрегирующие запросы по десяткам миллионов строк. Вы создали словарь, чтобы дополнить числовой столбец mcc названиями стран, сохранили контур Германии в виде полигона и с помощью pointInPolygon подсчитали количество вышек внутри него. Наконец, с помощью ClickHouse Agents вы превратили этот вопрос в карту плотности, не написав самостоятельно ни кода агрегации, ни кода визуализации. Что можно сделать дальше:
  • Задать агенту уточняющие вопросы. Например, спросите, чем различается плотность вышек разных типов радиосвязи, таких как LTE и GSM, или в каких городах больше всего вышек NR. Сохраняйте часто используемые промпты в библиотеке промптов или создайте специализированного агента в Конструкторе агентов.
  • Сравнить страны. Добавьте полигоны других стран и выполните для каждой из них тот же запрос с pointInPolygon. Созданный вами словарь позволит подписать результаты названиями стран.
  • Сгруппировать вышки по ячейкам с помощью H3 или Geohash. Агент использовал простую сетку на основе округления. В ClickHouse также есть функции H3 и Geohash, которые формируют иерархические ячейки, хорошо подходящие для масштабируемых карт.
  • Изучить другие датасеты. Датасет NYC taxi тоже содержит координаты посадки и высадки пассажиров, а в каталоге примеров датасетов вы найдёте множество других.
Последнее изменение 26 сентября 2026 г.