読者です 読者をやめる 読者になる 読者になる

RからTurf.jsを使うlawnパッケージを触ってみた

R turf.js

Turf.jsというJavascriptGISをやるためのライブラリがあります。

これをRから使うためのパッケージをrOpenSciがつくっていました。今のところ、leafletパッケージでできる程度の使い方しか分からないんですが、ちょっとだけ触ってみたのでメモ。

インストール

V8パッケージとかleafletパッケージに依存しているので、依存パッケージをまず入れておきます。

sudo apt-get install libv8-dev

準備ができたらlawnをインストールします。

install.packages("devtools")
devtools::install_github("rstudio/leaflet")
devtools::install_github("ropensci/lawn")

地図を表示してみる

lawnにはlawn_dataというサンプルデータがついているので、とりあえずそれを表示してみます。表示はview()という関数でできます。今のところ、view()にはほかに引数を渡せないので、同じ縮尺で表示するやり方はなさそうでした。

library("lawn")
library("jsonlite")

view(lawn_data$polygons_count)
view(lawn_data$points_count)

ここに貼るのめんどくさいので、RPubsに上げました。

RPubs - lawn

計算してみる

READMEに載ってる例そのままですが、たとえばcount()は各ポリゴン内にある点の数を数えます。

分かりにくいですが、↑でlawn_data$polygons_countは四角形が横に2つ並んでいますが、2つの点は2つとも左の方に入っています。count()の結果と一致しています。

count(polygons = lawn_data$polygons_count, points = lawn_data$points_count)
#> $type
#> [1] "FeatureCollection"
#> 
#> $features
#>      type pt_count geometry.type
#> 1 Feature        2       Polygon
#> 2 Feature        0       Polygon
#>                                                                                           geometry.coordinates
#> 1 -112.07239, -112.07239, -112.02810, -112.02810, -112.07239, 46.58659, 46.61761, 46.61761, 46.58659, 46.58659
#> 2 -112.02398, -112.02398, -111.96613, -111.96613, -112.02398, 46.57043, 46.61502, 46.61502, 46.57043, 46.57043

この結果とか、点とポリゴンを重ねて表示するやり方はよく分かりませんでした。たぶんまだ開発中なんだろうな、という雰囲気です。使うにはまだちょっと早いかも。

ほんとはこんなことやりたい

GISって、別にRで分析すればよくない?と思われるかもしれませんが、個人的にTurf.jsに興味を持っているのは、こんなかっこいい地図が描けると聞いたからです。

www.mapbox.com

でもこれ、MapboxAPIを使わないと無理なのかもしれません。ちゃんと調べようと思いつつまだ手を付けられてないです。

まあとりあえずメモということで。


追記(2015/04/02): TODOリストありました。まだ実装されてるのは1/4くらいみたいです。

turf.js todo list · Issue #13 · ropensci/lawn · GitHub