Skip to main content
在本教程中,您将借助蜂窝基站数据集,探索如何使用 ClickHouse 处理地理数据。 您将把该数据集加载到 ClickHouse Cloud,查看其 schema,并对数千万行数据执行聚合查询。 随后,您将使用字典丰富数据,利用 pointInPolygon 函数统计德国境内的基站数量,并借助 ClickHouse 智能体将结果在地图上可视化。

前置条件

要完成本教程,您需要:
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

查看 schema

  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 智能体可视化数据

接下来,我们希望将这些数据可视化。以下是一次可选的示例运行:ClickHouse 智能体是由模型驱动的 Beta 功能,因此每次运行时,其执行计划、工具调用 trace 和输出都可能有所不同。 ClickHouse 智能体让您可以通过对话轻松查询和探索 ClickHouse 数据,无需自行编写 SQL 或编排逻辑。 智能体会理解您的意图、规划步骤、调用您已配置的工具,并将结果返回给您。在左侧菜单底部,点击组织名称下方的 ClickHouse agents,即可打开 ClickHouse 智能体。 您可以通过聊天向 ClickHouse 智能体发送消息。 输入“Visualize cell towers within Germany on a map using the default.cell_towers and default.germany tables”,然后点击发送。 在某次运行中,智能体执行了以下步骤:
  • 在 mcc_country_dict 中查找德国的移动国家代码 (MCC) ,得到 MCC 262。
  • 使用 pointInPolygon 统计落在 germany 多边形内且 mcc = 262 的基站数量,结果为 2,588,635 个。这一数字略少于上文的计数,因为额外的 mcc 过滤器排除了位于多边形内、但注册在其他国家的基站。
  • 智能体没有逐一绘制 260 万个点,而是对 lon 和 lat 进行舍入,将基站归入 0.1° × 0.1° 的网格,共生成 4,821 个单元。它还核验了各单元计数之和恰好为 2,588,635,确保分箱过程中没有数据丢失或重复计数。
  • 从 germany 中获取多边形,将其作为轮廓叠加在网格上,并采用对数色标,使密集的城市单元和稀疏的乡村单元都能清晰呈现。
打开生成的文件即可查看结果。图中明亮的聚集区域即为主要大都市区:柏林、汉堡、慕尼黑和法兰克福。

后续步骤

在本教程中,您将 OpenCelliD 蜂窝基站数据集加载到 ClickHouse Cloud 中,查看了其 schema,并对数千万行数据运行了聚合查询。 您创建了一个字典,为数值型的 mcc 列补充国家名称;将德国的轮廓存储为多边形,并使用 pointInPolygon 统计了德国境内的基站数量。 最后,您借助 ClickHouse 智能体将这一问题直接转化为一张密度地图,无需亲自编写聚合或绘图代码。 接下来,您可以:
  • 向智能体继续提问。 例如,询问 LTE 和 GSM 等不同制式的基站密度有何差异,或者哪些城市的 NR 基站最多。您可以将常用的提示词保存到提示词库中,或在智能体构建器中构建专用智能体。
  • 比较不同国家。 插入其他国家的多边形,并对每个国家运行相同的 pointInPolygon 查询。借助您创建的字典,可以为结果标注国家名称。
  • 使用 H3 或 geohash 对基站进行分桶。 智能体使用的是简单的舍入网格。ClickHouse 还提供 H3 和 geohash 函数,可生成层级化的单元,非常适合可缩放的地图。
  • 探索其他数据集。 纽约出租车数据集同样包含上车和下车坐标,示例数据集索引页中还列出了更多数据集。
最后修改于 2026年9月26日