ポイントデータを均等に分割する方法

46 views
Skip to first unread message

TJ

unread,
Apr 5, 2018, 4:42:07 AM4/5/18
to FMEユーザーフォーラム
広域に分散しているポイントデータを一定の数で分割したいです。例えば10000ポイントを1000ずつで分割する。
分割の際、単純に数量で分割するのではなく、エリアでグループしたいです。
何かいい案があれば教えていただきたいです。

Takashi Iijima

unread,
Apr 5, 2018, 5:38:53 AM4/5/18
to FMEユーザーフォーラム
これは、一般解のない問題だと思います。
スーパーコンピューターを使って全ての組合せを試すことができれば求められるでしょう。
あるいは、AIか。

点の並び方や密度などになんらかの規則性があるのであれば、方法はあるかも知れません。

TJ

unread,
Apr 5, 2018, 5:59:01 AM4/5/18
to FMEユーザーフォーラム
ご返答ありがとうございます。

調べたら、以下のQAがありました。
これらを参考して、PointCloudDensityTilter を利用してポイントの空間的な分割ができましたが、各グループはなぜか PointCloudDensityTilter の Target points per tile で設定した数にならなくて、グループごとの数もバラバラです。

Cluster points based on location (K-MEANS method)

Group points spatially and by count



Auto Generated Inline Image 1
Auto Generated Inline Image 2

Takashi Iijima

unread,
Apr 6, 2018, 4:14:18 AM4/6/18
to FMEユーザーフォーラム
PointCloudDensityTiler の定義を見たところ、点群が存在する矩形領域に含まれる点の数が Target points per tile に設定された数以下ならば出力し、多ければその領域を二等分して繰り返す、という処理でした。
繰り返しが終了した時点で、領域内の点の数 <= 設定数となりますが、= 設定数であることは保証されません。
ヘルプにもこのように書かれています。
"Clips the point clouds into tiles which have a number of points equal or less than the target density."

Takashi Iijima

unread,
Apr 8, 2018, 4:47:34 AM4/8/18
to FMEユーザーフォーラム
理想的ではないかも知れませんが、入力したポイントを一定数で分割するカスタムトランスフォーマーを作ってみました(FME 2018.0.0.1)。
内容については添付ファイル(カスタムトランスフォーマー *.fmx とテスト用のワークスペース *.fmw)をご参照ください。
次の画像は、テスト用ワークスペースの実行結果です。

pointgrouper-test.zip

TJ

unread,
Apr 9, 2018, 5:18:33 AM4/9/18
to FMEユーザーフォーラム
ご回答とサンプルのご提供ありがとうございます。

PointCloudDensityTiler の定義を確認したら、ご解説のように、ポイント数を保証する処理がありませんでした。

添付していただいたカスタムトランスフォーマーで試した結果、以下のような結果を得ることができました。今回単純にエリアで一定数でポイント分けたいので、これで一応目的を達成です。NeighborFinder と Loop で使う方法とても参考になりました。



理想を言えば、ポイントの密度を考慮して分割できればいいなと思います。
まだ完全に理解していない部分がありますが、以下の記事を参考して、ホットポイントを中心にしてポイントを分割する方法を考えています。もし何かいいアイデアがあれば是非教えていただきたいです。

Cluster or Density Modelling



Auto Generated Inline Image 1
Reply all
Reply to author
Forward
0 new messages