CartoDBの活用(2)

今回はCartoDBらしく、マップによるデータビジュアライゼーションをしてみます。横浜市の250mメッシュ人口を、鉄道駅から1.5Km圏内と圏外によって異なる色の濃淡で表現します。

シェープファイルのインポート
シェープファイルは複数のファイルから構成されます。CartoDBでは、それらを1つのZIPファイルにまとめてからインポートします。
横浜市の250mメッシュ人口は、統計GIS メッシュ集計データからダウンロードしたtoukeigis.zipを使用します。toukeigis.zipをCartoDBにインポートすると、「Encoding Error (2006)」というエラーになります。これは、toukeigis.zipの中にあるファイルの名前に、全角文字が使用されているためです。
そこで、toukeigis.zipを一旦展開してファイル名を変更します。

ren 横浜市統計GIS.* YokohamaGIS.*

yokohamagis.zipファイルにまとめて、CartoDBにインポートします。
表示をMAP VIEWに切り替えると、地図が表示されます。

wizardsタブをクリックし、表示形式をSIMPLEからCHOROPLETHに変更すると、平成22年国勢調査:総人口(z1カラム)による濃淡表示に変わります。

表示に使用するカラムを変更することで、人口増減や高齢化率増減等、異なるデータによるビジュアライズが可能です。

鉄道駅のシェープファイルは、国土数値情報 鉄道データからダウンロードしたN02-14_GML.zipを使用します。
CartoDBにインポートすると、n02_14_stationとn02_14_RailroadSectionの2つのデータセットが作成されます。使用するのは前者です。
DATA VIEWで見ると、文字化けしています。これは、CartoDBは文字コードUTF-8を使用するのに対し、国土数値情報はShift_JISを使用しているためです。

今回は文字情報は特に必要ないため、このまま使用します。

バッファの作成
空のデータセットyokohama_stationsを作成し、sqlタブで以下のクエリを入力します。

SELECT
  DISTINCT s.cartodb_id,
  ST_Transform(
    ST_Buffer(
      s.the_geom::geography, 1500
    )::geometry,
    3857
  ) As the_geom_webmercator
FROM yokohamagis y, n02_14_station s
WHERE ST_Intersects(y.the_geom, s.the_geom)

鉄道駅のデータセットには日本全国の駅が含まれているため、ST_Intersects()で横浜市のメッシュと交差している駅だけを選択し、ST_Buffer()で1.5Kmバッファを作成して返します。
[Apply query]ボタンをクリックし、MAP VIEWを表示すると以下のようなマップが表示されます。

鉄道駅から半径1.5Kmが円で表されています。
このyokohama_stationsデータセットはクエリでデータを作成しているだけで、実際にデータは含んでいません。そのため、yokohama_stationsテーブルをクエリで参照しても、何も返されません。そこで、右上の「Edit」メニューから「Dataset from query」を実行して、クエリで作成したデータを含むyokohama_stations_copyデータセットを作成します。

マップの作成
空のマップを作成し、SQLタブに以下のクエリを入力します。

SELECT DISTINCT y.*
FROM yokohamagis y, yokohama_stations_copy s
WHERE
ST_Within(
  ST_Centroid(y.the_geom),
  s.the_geom)

ST_Centroid()で得られる重心点が鉄道駅から半径1.5Kmのバッファに含まれるメッシュのみを取得します。
MAP VIEWで表示形式をCHOROPLETHにし、色を緑の濃淡に変更すると以下のようになります。

マップに空のレイヤを追加し、SQLタブに以下のクエリを入力します。

SELECT *
FROM yokohamagis
EXCEPT
SELECT DISTINCT y.*
FROM yokohamagis y, yokohama_stations_copy s
WHERE
ST_Within(
  ST_Centroid(y.the_geom),
  s.the_geom)

半径1.5Kmのバッファに含まれないメッシュを取得しています。
表示形式をCHOROPLETHに変更すると以下のようになります。

地図の凡例を見ると、レイヤによって最小値と最大値が異なっています。そこで、legendsタブでLeft labelとRight labelの値を修正し、タイトルも追加します。

マップに表示するコントロールをOptionsで変更したり、マップとデータセットのメタデータを編集して著作権やライセンス等に関する情報を入力すれば完成です。

さらに、鉄道駅から1.5Km外のうちバス停から250m内の人口は青の濃淡で表し、バス停位置のアイコン表示を追加すると、以下のようなマップになります。

CartoDBの活用 12