ドナルドのいない街を可視化してみた。

最終更新日

市区町村ごとのマクドナルド店舗数で色付けしています。色が濃い地域ほど店舗が多くなります。
白く塗られた地域がマクドナルドが一店舗もない「ドナルドのいない街」です。

マクドナルド店舗数コロプレスマップ

DEMO

経緯

Geoクラスタではマクドナルドの店舗データを使った分析が流行っているらしいので、周回遅れながらこのビッグウェーブに乗ってみることにしました。

日本一マクドナルドから遠い場所 - Qiita
「本当に」日本一マクドナルドから遠い場所|ヌノカワ ユウスケ|note
日本一マクドナルドから遠い場所はPostGISで求められるかな? - Qiita
日本一マクドナルドから遠い場所 をより精確に求めてみた - Qiita

とはいえ、一番遠い場所を見つける別のアプローチも思いつかなかったので、今回は、GISを使った分析の基本、「ポリゴンごとに含まれるポイントをカウントして塗り分け地図を作る」をすることに。

データ

・マクドナルド店舗データ
店舗検索 | お店をさがす | McDonald’sのページより、デベロッパーツールを使って店舗情報を取得しました。

・市区町村ポリゴン
全国市区町村界データ | ESRIジャパンよりダウンロードしたshapeファイルをGeoJSONに変換して使っています。

市区町村ごとの店舗数を求める

下記画像のようにポイントデータとポリゴンデータを用意し、各ポリゴンに含まれるポイントデータを抽出します。

QGISなどを使うことで簡単に計算することができるのですが、今回はTurf.jsを使って計算しました。
Turf.jsは、地理情報を分析するための様々な機能をもつJavaScriptライブラリです。

このブログでもいくつかサンプルを載せているので興味があるかたは使ってみてください。
(一部、バージョンアップにより使えなくなった機能があります)

Turf.js – GUNMA GIS GEEK

Turf.jsは、フロントエンドだけでなくnode.jsのスクリプトとしても実行できるので、バックエンドやローカルで利用することもできます。

今回は、データ量が多いのでローカルで計算しました。

turf.jsインストール

turf.jsはnpmでインストールすることができます。

pointsWithinPolygon

turf.jsでは、複数のポイントデータの中から、特定のポリゴン内に含まれるポイントだけを抽出する pointsWithinPolygon という関数があるので、この関数をつかって市区町村ごとの店舗数を求めます。

サンプルコード

実行

地図に載せて見た

作成したGeoJSONデータは、GeoJSONに対応した地図ライブラリや地図サービスなどに読みこませて表示することができます。
今回は、以前記事にした、GeoJSONをフロントエンドでベクトルタイル化して表示する」方法で地図をつくりました。

マクドナルド店舗数塗り分け地図

おまけ

店舗数の多い地域のランキングなどを調べてみました。

やはり関東圏に店舗の多い地域が集まっている感じです。
市区町村ごとの人口のデータがあったので「一人当たり店舗数が多い地域」で計算してみたけど順位はあまり変わらず。ただ一点、沖縄県島尻郡八重瀬町の店舗(東風平店)が突如ランクインします。
八重瀬町はもともとは、東風平町を含む4町村が合併するはずだったのが、いろいろあって2町村のみの合併になったとのことで、他のマック有り地域より人口が少ないので一人当たりの店舗数が多くなったっぽいです、

逆に人口が多い地域でマックがない地域を調べてみると、九州・四国が少ないみたい。
1位の広島市安芸区は飛地になっていて、分断されたちょうど隙間に店舗がありました。

安芸区飛地