Места Foursquare
Набор данных
Этот набор данных от Foursquare доступен для скачивания и бесплатного использования по лицензии Apache 2.0.
Он содержит более 100 миллионов записей коммерческих точек интереса (POI), таких как магазины, рестораны, парки, игровые площадки и памятники. Он также включает дополнительную метаданные о этих местах, такие как категории и информация в социальных сетях.
Исследование данных
Для исследования данных мы будем использовать clickhouse-local
, небольшой инструмент командной строки, который предоставляет полный движок ClickHouse, хотя вы также можете использовать ClickHouse Cloud, clickhouse-client
или даже chDB
.
Выполните следующий запрос, чтобы выбрать данные из S3-хранилища, где находятся данные:
Мы видим, что довольно много полей имеют значение ᴺᵁᴸᴸ
, поэтому мы можем добавить дополнительные условия к нашему запросу, чтобы получить более полезные данные:
Запустите следующий запрос, чтобы посмотреть автоматически выведенную схему данных с помощью DESCRIBE
:
Загрузка данных в ClickHouse
Если вы хотите сохранить данные на диске, вы можете использовать clickhouse-server
или ClickHouse Cloud.
Чтобы создать таблицу, выполните следующую команду:
Обратите внимание на использование типа данных LowCardinality
для нескольких колонок, что изменяет внутреннее представление типов данных на кодированное в словаре. Работа с кодированными в словаре данными значительно увеличивает производительность запросов SELECT
для многих приложений.
Кроме того, создаются два UInt32
MATERIALIZED
столбца, mercator_x
и mercator_y
, которые отображают координаты широты/долготы на веб-проекцию Меркатора для более легкого сегментирования карты на тайлы:
Давайте разберём, что происходит выше для каждого столбца.
mercator_x
Этот столбец преобразует значение долготы в координату Х в проекции Меркатора:
longitude + 180
сдвигает диапазон долготы из [-180, 180] в [0, 360]- Деление на 360 нормализует это до значения от 0 до 1
- Умножение на
0xFFFFFFFF
(шестнадцатеричное значение для максимального 32-битного беззнакового целого числа) масштабирует это нормализованное значение до полного диапазона 32-битного целого числа
mercator_y
Этот столбец преобразует значение широты в координату Y в проекции Меркатора:
latitude + 90
сдвигает широту из [-90, 90] в [0, 180]- Деление на 360 и умножение на pi() преобразует в радианы для тригонометрических функций
- Часть
log(tan(...))
является核心 формулы проекции Меркатора - Умножение на
0xFFFFFFFF
масштабирует до полного диапазона 32-битного целого числа
Указание MATERIALIZED
гарантирует, что ClickHouse производит вычисления для этих столбцов при выполнении INSERT
данных, не требуя указания этих столбцов (которые не являются частью оригинальной схемы данных) в операторе INSERT
.
Таблица заказать по mortonEncode(mercator_x, mercator_y)
, что создает кривую пространственного заполнения Z для mercator_x
, mercator_y
, чтобы значительно улучшить производительность геопространственных запросов. Это порядок кривой Z гарантирует, что данные физически организованы по пространственной близости:
Также создаются два индекса minmax
для более быстрого поиска:
Как вы можете видеть, у ClickHouse есть абсолютно все, что вам нужно для приложений картирования в реальном времени!
Выполните следующий запрос для загрузки данных:
Визуализация данных
Чтобы увидеть, что возможно с этим набором данных, ознакомьтесь с adsb.exposed. adsb.exposed был изначально создан соучредителем и техническим директором Алексеем Миловидовым для визуализации данных о полётах ADS-B (Автоматическая зависимая наземная служба радиосвязи), которые в 1000 раз больше. Во время хакатона компании Алексей добавил данные Foursquare в инструмент.
Некоторые из наших любимых визуализаций представлены ниже для вашего удовольствия.



