AlteryxのRツールでSpatial Objectを扱う

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

今回は、AlteryxのR ToolでSpatial Objectを含むデータを扱う方法について書かせていただきます。

デフォルト時の挙動

まずは、R Toolの入力としてSpatial Objectを含むデータを与えた時にどのような動きになるか見てみましょう。 Map Input Toolを利用して適当なポイントを用意しています。

スクリーンショット 2017-05-30 15.08.36

データとしては以下のようになっています。

スクリーンショット 2017-05-30 15.23.52

これをR Toolで読み込んでそのまま出力しみます。

the.data <- read.Alteryx("#1")
write.Alteryx(the.data, 1)

出力された結果を確認すると以下のようになっています。

スクリーンショット 2017-05-30 15.25.35

データの型も文字列になってしまっています。

スクリーンショット 2017-05-30 15.26.23

Spatial Objectを入力として扱う

では、Spatial Objectを持つデータに対して途中でR Toolを使った処理を噛ませたい場合はどうすればいいのでしょうか。 R Toolにデータを読み込ませる際にDataFrameとしてではなく、listとして読み込ませることでSpatial Objectをそのまま扱うことができます。

the.data <- read.Alteryx("#1", "list")
write.Alteryx(the.data, 1)

Rで読み込んだデータをprint出力で確認してみると以下のような形式になっていることが確認できます。

スクリーンショット 2017-05-30 15.41.11

データは、{sp}パッケージのSpatialPoints型のようなので、coordinates関数を使って、x, yの値を取り出してやることができます。 以下のコードを実行すると、1件目のデータの座標が取得できます。

xy <- coordinates(the.data$SpatialObj[[1]]
print(xy)
print(class(xy))

スクリーンショット 2017-05-30 16.42.38

Spatial Objectでlineやpolygonを扱っている場合も同様、{sp}パッケージのPolygonオブジェクトとして取得することができます。

# lineからPolygonオブジェクトを取得する場合
# <行番号>には実際のデータの行番号を入れる
polygonsObj[[<行番号>]]@lines[[1]]@Lines

# polygonからPolygonオブジェクトを取得する場合
# <行番号>には実際のデータの行番号を入れる
polygonsObj[[<行番号>]]@polygons[[1]]@Polygons

これらに関して、R上でどのように扱うかはパッケージのドキュメントを参照してください。

終わりに

今回はSpatial Objectを扱うデータをR Toolで読み込む方法を紹介しました。

実際には、これ自体を利用するシーンというのは少ないかもしれませんが、R ToolでSpatial Objectを含むデータを扱う際の注意点として覚えておくといいかもしれません。