【Snowflake】地理データの可視化をしてみた

【Snowflake】地理データの可視化をしてみた | Tableau-id Press -タブロイド-
snowflake-logo-1200x630-960x504

やしろです!

サミットで参加したハンズオン

先月ラスベガスで開催されたSnowflake Summit 2023では、各種セッションの他にハンズオンにも参加してきました!
(その時のお話はこちら

色々なハンズオンがあったのですが、私が参加したのは”Geospatial Analytics for Telecom with Snowflake and Carto”という、空間分析がテーマのハンズオンです。

CARTOという「地図や位置情報を用いて、データの可視化や各種分析、機械学習に応用できるプラットフォーム」とSnowflakeを繋いで、地理空間データを可視化や分析にトライする内容になっています。
まるっとご紹介すると長くなってしまうので、今回は可視化の方を中心にご紹介したいと思います。

使用するのは、イギリスの携帯電話基地局の位置情報と、それに対応するロケーションエリアのIDデータです。
現在地に対して、「
最寄りの基地局はどこにあるか?」という質問に答えます。

 

1.Snowflakeアカウントの作成

今回のハンズオンには、ACCOUNTADMIN権限が必要になります。
アカウントの作成が必要な場合は、こちらから無料トライアルアカウントを作成します。(リージョンやエディションは任意でOKです)

アカウントを作成したら、ロールはACCOUNTADMINに切り替えておいてください。
必要に応じてウェアハウスを作成しますが、このハンズオンに関して言えばデフォルトのCOMPUTE_WHでもOKです。

また、Snowflakeのサードパーティ規約に同意する必要があります。
"管理者" → "請求と条件" → ”Anaconda”セクションで、"Anaconda Python packages"を有効化します。

 

2.CARTOアカウントの作成

CARTOも、Snowflakeと同じく無料トライアルが用意されているので、必要な情報を入力してアカウントを作成しましょう。
このとき、地域はSnowflakeアカウントと同じ地域を選択してください。
アカウントが作成されると、このようなトップページが表示されます。

 

3.SnowflakeとCARTOを接続

それぞれアカウントが準備できたら、SnowflakeとCARTOを接続しましょう。
設定はCARTOから行います。

① 先程のトップ画面から”Connections"を選択します。

②”Connect your Data Warehouse”→”Create your first connection”をクリックします。
※既存のCARTOアカウントを使用している場合は、”Create your new connection”となるようです。

③"Data warehouse"で"Snowflake"を選択し、"Set up connection"へ移動します。

④以下の必要な接続情報を入力して
・接続の名前:任意の名称でOK
・ユーザー名:Snowflakeの ユーザーアカウントの名前
・パスワード: Snowflakeの ユーザーアカウントのパスワード
・アカウント: アカウント名 (”<account_name>.snowflakecomputing.com”で確認できます)
・データベース:デフォルトのデータベース(任意でOK)
ウェアハウス ・ロールはオプション入力、です。

 

4.Marketplaceからデータを取得

今回のハンズオンで使用するデータはマーケットプレイスで提供されている以下のデータです。
OpenCelliD – Open Database of Cell Towers
:携帯電話基地局のGPS位置とそれに対応するロケーションエリアのIDデータ

マーケットプレイスの検索窓で検索して、データを取得しましょう。
データ詳細ページ右にある”Get”からデータを取得できます。
オプションでデータベース名を変更できるので、”OPNECELLID”とわかりやすい名称に変えておきます。

データの中身はこんな感じです。

 

5.データに接続

①CARTOに戻り、”MAP” → "Create your first map"(あるいは"Create new map") を選択します。

②世界地図が表示されるので、画面左下の"Add source from…"から、"Custom Query(SQL)"を選択します。

③手順4で設定したSnowflakeの接続情報を選択していることを確認して、"Add Source"をクリックします。

④SQLエディターが表示されるので、SQLを打ち込んでみます。

まず、現在の場所を表すクエリを実行してみましょう。
このハンズオンでは、現在地としてロンドン大学の法学部キャンパス(POINT(-0.131034 51.526473))の位置情報が準備されているので、今回はそれを使用します。
記述するSQLは

select to_geography('POINT(-0.131034 51.526473)') as geom;

です。左下のRUNボタンで実行しましょう。
すると、ちょっと見づらいですがこんな感じでポイントが表示されましたね!

5.空間分析してみよう!

Open cell IDデータの中には、世界中の携帯電話基地局の位置が記載されたデータが準備されています。
それを利用して、直線で現在地に最も近い 10 個の LTE 基地局を検索するクエリを実行してみましょう。

SELECT DISTINCT ST_POINT(lon, lat) AS geom,

 // st_distanceを使用して、現在地から最も近い基地局までの距離を計算します 
st_distance(geom, to_geography('POINT(-0.131034 51.526473)'))::number(6, 2) AS distance_meters FROM OPENCELLID.PUBLIC.RAW_CELL_TOWERS 

// イギリスの国番号を持つ基地局に絞ります 
WHERE mcc in ('234', '235') 

// 基地局をLTEに絞ります 
and radio = 'LTE' 

// 500m以内にある基地局に絞ります 
and st_dwithin(geom, TO_GEOGRAPHY('POINT(-0.131034 51.526473)'), 500) = TRUE 

// distance_metersの降順で上位10件に絞ります 
ORDER BY 2 ASC 
LIMIT 10;

実行した結果がこちらです

基地局が10箇所表示されました!
ちなみにSnowflakeで同じクエリを実行した結果はこんな感じになります。

まとめ

こんな感じで、Snowflakeにあるデータを使ってCARTO上でささっと可視化ができました!
実際のハンズオンでは、もっと複雑な分析(「英国の道路のうち、LTE の通信範囲が狭いまたは全く道路は何キロありますか?」など)も色々紹介していただきました。
今回は割愛してしまいましたが、Snowflakeのクイックスタートで同じ内容が紹介されているので、興味がある方はぜひ見てみてください!

 

これまでのSnowflakeに関する記事はこちら