内容が古くなっている可能性がありますのでご注意下さい。
オンラインのWebマッピングサービスCartoDB(CARTOと名前が変わりました)は、豊富な機能と多彩な表現力で人気急上昇中です。データベースとして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指定でデータをインポートすることにより、効率的に作業をすることができました。