CartoDBの活用(1)

この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。


オンラインのWebマッピングサービスCartoDBCARTOと名前が変わりました)は、豊富な機能と多彩な表現力で人気急上昇中です。データベースとしてPostGISを採用していることも、様々な応用の可能性の源泉になっています。
今回は、CARTOのデータベース機能を少しだけ「つまみ食い」します。

今回用いるデータは、「ウィキペディア街道」プロジェクトの成果の記録です。
「ウィキペディア街道」プロジェクトは、東京・赤坂から丹沢・大山へ通じる「大山道」沿いにある史跡等について、ウィキペディアに記事を執筆する活動をしています。
イベント開催と記事執筆について、GitHub上のGeoJSONファイルに記録しています。

このGeoJSONファイルをCARTOのデータベースに取り込み、記事執筆対象の地物を、大山道の起点である赤坂御門からの直線距離でソートしてみます。

はじめに、データセットの一覧画面で[NEW DATASET]をクリックします。

データセットのURL

https://github.com/wikipedia-kaido/wikipedia-kaido/blob/master/oyamamichi.geojson

を入力し、「SUBMIT」をクリックします。

[CONNECT DATASET]をクリックします。

インポートされたデータが表示されます。

PREVIEWをクリックすると、データが地図にプロットされます。

BACKで戻り、「SQL」を選択します。

以下のSELECT文

SELECT 
  regexp_replace(__2,'(^<a.*">)(.*)(</a>$)','\2'),
  ST_Distance(
    ST_Transform(the_geom, 2451),
    ST_Transform(ST_GeomFromText('POINT(139.738323 35.678827)',4326),2451) ) AS dist
FROM oyamamichi
ORDER BY dist

を入力して[APPLY]をクリックすると、記事タイトルと赤坂御門からの距離が、距離により昇順ソートされて出力されます。

SELECT文の

  regexp_replace(__2,'(^<a.*">)(.*)(</a>$)','\2'),

では、以下の形式

<a href=\"https://ja.wikipedia.org/wiki/%E7%94%A8%E8%B3%80%E7%A5%9E%E7%A4%BE\">用賀神社</a>

による記事タイトルとウィキペディア記事へのリンクから、正規表現で記事タイトル部分のみを取り出しています。

  ST_Distance(
    ST_Transform(the_geom, 2451),
    ST_Transform(ST_GeomFromText('POINT(139.738323 35.678827)',4326),2451) ) AS dist

は、取得したデータ項目の座標(the_geom)をEPSG:2451(平面直角座標系Ⅸ系)に変換し、赤坂御門の座標(東経139.738323、北緯35.678827)との距離を求めています。

ちなみに、このSQL文の実行後は地図のPREVIEWはできません(はじめに「つまみ食い」と書いたのはそのためです)。

CARTOを用いることで、PostGIS環境を自分で用意することなく、地理空間情報を用いたクエリを実行することができました。また、GitHUBのURL指定でデータをインポートすることにより、効率的に作業をすることができました。

CARTOの活用 1234