Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

複数のポリゴンの交差や接触しているかを判定して、グループとしてIDをふりたい。

donnaanna
メテオール

こんにちわ。

Alteryx初心者です。

 

空間マッチツールをつかって上記の判定をして、ひとつのかたまりと判定できたらグループIDをふりたいと思っています。

もっているデータはポリゴンのIDとSpatialObjになります。

 

接触または交差するかどうかをまず一行目とそれ以外の行で空間マッチで行い、マッチした行を次のループのT入力として繰り返し出力、マッチしなかった行を次のU入力として出力…。とすると反復マクロの入力の入り口は2つになりますがこれは可能でしたでしょうか…。マッチしないところまでループしたときにひとつのグループはここまで、と決まるかと思ったのですが、その場合グループIDをどうふったらよいのかわからなくなってしまいました。

 

コミュニティの方々にお知恵を拝借できたらと思います。

よろしくお願いいたします

 

 

3件の返信3
donnaanna
メテオール

もしかして自己解決したかもしれないので、一応記録として…。空間マッチをおこなったあと、グループ化ツールをつかうことでグループを作成できたかもしれません。これから精査してみます。

AkimasaKajitani
17 - Castor
17 - Castor

@donnaanna さん

 

空間マッチのあとのグループ化だと、恐らく直接くっついていないポリゴン同士(何か他のポリゴンを経由している場合)がなかなかうまくいかないのではないかと思います。

 

これ、、、複雑なようで発想の転換をすると非常に簡単に解決する問題です(が、なかなか思いつかないんですよね・・・)。

 

例として、インプットファイルを適当に作ってみました。

 

AkimasaKajitani_0-1643636281552.png

 

これを集計ツールで結合します。

 

AkimasaKajitani_1-1643636326941.png

 

すると、2つの塊になりました。ここまでくれば、あとはこの2つのポリゴンに対してもともとの入力のポリゴンのマッチングを取ればいい、ということになります。

ただ、集計ツールで結合すると、全体として1ポリゴンという扱いになります。

 

AkimasaKajitani_2-1643636404914.png

 

ここで、ポリゴン分割ツールを使いましょう。すると、2つのポリゴンに分割されます(見た目は同じですが)。これにレコードIDまでつけましょう。

 

AkimasaKajitani_5-1643636550789.png

 

これに対してマッチングを行えば・・・。

 

AkimasaKajitani_6-1643636724073.png

※データ量(ポリゴンの量)が多い時は、空間マッチで不要な空間オブジェクトは削除しましょう。

 

ワークフローとしては以下のような感じになります。

 

AkimasaKajitani_7-1643636790104.png

 

 

 

donnaanna
メテオール

ご回答いただきありがとうございます。

 

ご指摘いただいたとおり直接接していない場合にどう判定していくかが悩みの種でした。

結局グループ化ツールでもできたのはできたのですが、グループ化ツール以外でもなんかできそうなんだけど、とモヤモヤしておりました。

 

結合してみたりはしたのですが、その先が思いつかなかったので、メカラウロコです。

結合して、グループに分割して、グループ1、グループ2としたあとに、もとのポリゴンとのマッチングをするのですね。。