Spatial Objects (空間情報の分析) | Alteryx Predictive Tools 道場 Advent Calendar 2018 #13

Spatial Objects (空間情報の分析) | Alteryx Predictive Tools 道場 Advent Calendar 2018 #13

Clock Icon2018.12.13

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

はじめに

こんにちは。DI部の大高です。

当エントリは『Alteryx Predictive Tools 道場 Advent Calendar 2018』の13日目のエントリです。今回は個人的に非常に興味のある地図データを扱ったサンプルです!

クラスメソッド Alteryx Predictive Tools 道場 Advent Calendar 2018 - Qiita

Alteryx Predictive Tools 道場 Advent Calendar | シリーズ | DevelopersIO

前提条件

Alteryxは「Alteryx Designer / Version 2018.4」を利用しています。

Spatial Objects (空間情報の分析) ワークフローとは

Alteryxを開き「ヘルプ > サンプルワークフロー > Predictive tool samples > Predictive Analytics > 13 Spatial Objects」から開くことができます。

実際に開いたワークフローがこちらです。

ワークフローの概要として記載されているとおり、このワークフローは以下のようなワークフローとなっています。

This workflow demonstrates how to bring Alteryx spatial objects (points and polygons) into an R script and how to output spatial data from an R script to Alteryx.

このワークフローは、RスクリプトにAlteryx空間オブジェクト(ポイントとポリゴン)を入力させる方法と、RスクリプトからAlteryxに空間データを出力する方法を示しています。

なお「Rツール」は「開発者」タブから利用することができます。

Rツールとは?

Rツールについては、今回のAlteryx Predictive Tools 道場 Advent Calendar | シリーズ | DevelopersIOの01日目でも紹介しておりますが、R言語のプログラムコードを直接記述することができるツールとなります。

では、まずは実際にワークフローを実行してみましょう。

実行結果

実行結果は閲覧ツールから地図として表示することができます。ワイオミング州の各郵便番号区域のポリゴンとペットショップの座標が表示されています。

各ツールの確認

サンプルワークフローでは各ツールの説明も記載されているので、それぞれ確認してみます。

データ入力ツール

入力ツールを使用して、空間データを含む2つのデータセットを取り込みます。 提供される最初のセットには、ワイオミング州のペットショップの場所を表す空間座標が含まれ、2番目のセットにはワイオミング州の郵便番号区域のポリゴンが含まれます。

ということで、それぞれ以下のようなデータが格納されています。

こちらがペットショップのポイントデータで、13件のペットショップがあります。

こちらがワイオミング州のポリゴンデータで、郵便番号区域毎のポリゴンデータですね。

選択ツール

選択ツールを使用して、ペットショップのロケーションデータから名前と空間座標のみを保持します。

選択ツールでは、ペットショップのロケーションデータのうち「Unknown」フィールドを除いたフィールドを選択していました。

空間マッチツール

空間マッチツールを使用して、空間座標を含む郵便番号区域のポリゴンを検索します。

個人的に最も興味があった箇所です!

空間マッチツールでは、入力された2つの空間オブジェクトの空間関係に一致するもの、または、一致しなかったものを出力するツールです。今回のサンプルの設定では「ターゲットがユニバース内にある地点」となっていますので、すなわち、「ペットショップの空間座標が郵便番号区画ポリゴン内にある地点」ということですね。

なお、空間オブジェクト間の空間的関係については下記のFMEリファレンスページの説明がとても分かりやすかったです。空間マッチツールでは、なんと「カスタムDE-9IM相関」(Dimensionally Extended 9 Intersection Matrix)を設定可能なので、どのような空間的関係であっても設定することができそうですね。

ジオメトリ間の空間的関係 | FMEリファレンス

Rツール

Rツールをクリックして、設定タブを開きます。 ここで、Rバージョンを選択し、テキストウィンドウにRコードを入力することができます。

read.Alteryx() 関数はYXDBデータをR環境にストリームし、write.Alteryx()関数はYXDB形式のデータをRツールからストリームします。 print()コマンドは、Rデータを出力ウィンドウに表示します。 また、表示されるとおり、空間データポイントを2番目の出力にプロットすることもできます。

spパッケージは、R内で空間データを扱うために使用されます。

では実際のコードをみてみます。

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

# Prepare the spatial points
AlteryxGraph(2, width=576, height=576)
pointsObj <- the.data$SpatialObj
the.SpatialPoints <- SpatialPoints(matrix(sapply(pointsObj,coordinates),ncol=2,nrow=length(pointsObj),byrow=TRUE))

# Prepare the polyons
polygonsObj <- the.data$Universe_SpatialObj

the.polygonList <- list()
index <- 1
for(i in (1:length(polygonsObj))) {
  for(j in (1:length(polygonsObj[[i]]@polygons[[1]]@Polygons))) {
    the.poly <- polygonsObj[[i]]@polygons[[1]]@Polygons[[j]]
    the.polygonList[[index]] <- the.poly
    index <- index + 1
  }
}

the.polygons <- Polygons(the.polygonList, "mID")
the.polygonsList <- list(the.polygons)
the.spatialPolygons <- SpatialPolygons(the.polygonsList)

# Plot the spatial polygons and spatial points
plot(the.spatialPolygons,col="pink",axes=TRUE)
plot(the.SpatialPoints, pch=15, add=TRUE)

invisible(dev.off())

最初の3行では、説明にあったとおりread.Alteryx()とwrite.Alteryx()を利用して入力データをそのまま出力していることが分かります。その後の処理では、入力されたポリゴンと空間座標をグラフとして出力していますね。

閲覧ツール

閲覧ツールを使用して、モジュール実行後にRツールの入出力データを表示します。どちらも同じであることに注意してください。

閲覧ツールで表示されるデータは以下の通りです。

1つ目はRツールで入力をそのまま出力したデータですね。「マップ」として表示されています。

2つ目はRツールでグラフとして出力したデータです。上記と同じものになっていることが分かります。

まとめ

以上、Spatial Objects (空間情報の分析)ワークフローの紹介でした。Rツールのコードにあったとおり、ポイントデータやポリゴンデータなどの空間データをコード上で扱うことが出来るので、より複雑な分析を行いたい場合には活用できそうですね!

明日14日目はniinoによる「14.TS Plot Sample」(時系列分析)です。明日もお楽しみに!

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.