Skip to main content
このチュートリアルでは、基地局データセットを使用して、ClickHouse を Geo データの分析にどのように活用できるかを見ていきます。 データセットを ClickHouse Cloud に読み込み、スキーマを確認したうえで、数千万行を対象に集計クエリを実行します。 続いて、Dictionary を使ってデータを拡充し、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 であることがわかります。 Dictionary を使用すると、数値の mcc カラム値を国名に置き換えられます。
Dictionary を作成したので、これを使用して、同じリストに MCC と並べて国名も返せるようになりました。
Query
Response
4

地理空間データを取り込む

特定の地理的範囲内に基地局がいくつあるかを知りたい場合もあるでしょう。 ClickHouse には、pointInPolygon 関数をはじめ、このようなユースケースに役立つ Geo 関数が数多く用意されています。例として、ドイツ国内にある基地局の数を調べたい場合を考えてみましょう。 polygon 型のカラムを 1 つだけ持つ germany という名前のテーブルを作成します。
次に、ドイツ (本土) の輪郭を表す座標をテーブルに挿入します。
これで、pointInPolygon 関数を使って、ドイツ本土にある基地局の数を確認できます。
Query
Response
5

任意:ClickHouse Agents を使ってデータを可視化する

次に、このデータを可視化してみましょう。以下は任意の実行例です。ClickHouse Agents はモデル駆動型のベータ機能であるため、計画、ツールのトレース、出力は実行ごとに異なる場合があります。 ClickHouse Agents を使用すると、SQL やオーケストレーションロジックを自分で記述しなくても、会話を通じて ClickHouse のデータを手軽にクエリ・探索できます。 エージェントはユーザーの意図を解釈して手順を計画し、設定済みのツールを呼び出して結果を返します。左側メニューの下部にある組織名の下の 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 でドイツの Mobile Country Code を検索し、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 に読み込み、そのスキーマを確認したうえで、数千万行を対象に集計クエリを実行しました。 さらに、Dictionary を作成して数値の mcc カラムに国名を付与し、ドイツの輪郭をポリゴンとして保存して、pointInPolygon でその内部にある基地局の数をカウントしました。 最後に、ClickHouse Agents を使用し、集計コードや描画コードを自分で書くことなく、その問いを密度マップとして可視化しました。 次のステップとして、以下のようなことを試してみてください。
  • エージェントに追加で質問する。 LTE と GSM などの無線方式によって密度がどう異なるか、あるいは NR の基地局が最も多い都市はどこかを尋ねてみてください。繰り返し使うプロンプトはプロンプトライブラリに保存できます。また、エージェントビルダーで特定用途向けのエージェントを構築することもできます。
  • 国ごとに比較する。 他の国のポリゴンを挿入し、それぞれに対して同じ pointInPolygon クエリを実行します。作成した Dictionary を使えば、結果に国名のラベルを付けられます。
  • H3 や geohash で基地局を集計する。 エージェントは単純な丸め処理によるグリッドを使用しました。ClickHouse には H3 関数や geohash 関数も用意されています。これらは階層的なセルを生成するため、ズーム可能なマップに適しています。
  • 他のデータセットを探索する。 NYC タクシーデータセットにも乗車地点と降車地点の座標が含まれています。そのほかにも、サンプルデータセットの一覧に多数のデータセットが掲載されています。
最終更新日 2026年9月26日