ランダムポイントの作成ツールは、ポリゴン内に特定の数のポイントを生成できます。境界ボックスが与えられた場合、それらのポリゴンの外側にランダムポイントを生成する方法はありますか?
ランダムポイントの作成ツールは、ポリゴン内に特定の数のポイントを生成できます。境界ボックスが与えられた場合、それらのポリゴンの外側にランダムポイントを生成する方法はありますか?
回答:
個人的には、ArcGISのランダムポイントアルゴリズムは好きではありません。または、地理空間モデリング環境(GME)genrandompnts
機能を使用します。ランダムポイントが除外される特定のポリゴンを識別できます(添付されている.jpgの強調表示された領域を参照)。すべてのこのソフトウェアの最高は無料です。
GMEは、洗練されたワークフローを構築するために使用できる小さな「ビルディングブロック」から完全に独立した分析プログラムに至るまで、分析およびモデリングツールのスイートを提供します。また、いくつかの分析ツールを駆動する統計エンジンとして、非常に強力なオープンソースソフトウェアRを使用します。Rの多くの長所の1つは、Rがオープンソースであり、完全に透明であり、十分に文書化されていることです:科学分析ソフトウェアの重要な特性。
内部の非点空間を表すドーナツ穴と、多角形領域の境界領域を表す空間範囲を持つドーナツポリゴンを作成する必要があります。
申し訳ありませんが、抵抗することはできません。GMEのようなもので内部で何が起こっているかを知ることは常に良いので、実際のRコードでの解決策を以下に示します。
require(sp)
require(rgeos)
# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")
# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)
# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")
# Plot results
plot(d, col="red")
plot(rs,pch=19,col="black",add=TRUE)
このアプローチは、GMEがこれを行う方法とは非常に異なる可能性がありますが、ネイティブのR sp空間クラスとかなり新しいトポロジライブラリを使用してコードを非常に効率的にしています。これは、forループで簡単にラップできる例を示しています。