2011-12-30 6 views
1

Rのx座標とy座標の2列の行列として定義された2次元ポリゴンのリストを持っています。これらは、正方形の領域を完全に埋めるものであり、互いに排他的です。これらのポリゴン定義を使用して、各値がどのポリゴンに属するかによって識別されるx、y座標値の細かいグリッドを生成したいと考えています。Rの指定されたポリゴン内の座標グリッドを生成するにはどうすればよいですか?

私はspパッケージを調べて、SpatialPolygonsのオブジェクトにポリゴンを渡すことができますが、私のゴールに近づくかどうかはわかりません。私のポリゴンをデータフレームに入れて、ggplotgeom_polygon(aes(fill=ID))をつけて、ポリゴンIDに基づいた色付きのポリゴンのプロットを生成することができます。

私は前方に複数のパスを見ることができますが、それらのいずれかを達成する方法がわからない:

  1. 多角形をとり、ポリゴンの境界線内の座標の均一なグリッドを生成する関数を。 (私のポリゴンは非常に不規則で多面体なので、それらのカスタム関数を作成するのは苦労し、エラーが発生しやすくなります)。

  2. x、y座標のペアとポリゴンと出力のリストをとる関数です。ポリゴンに座標が入ります。

  3. 私ggplot-生成されたプロットを取り、数値のグリッドに色を変換する関数バックR.

    に私が読むことができる座標値を

も、私は「他のアプローチがあってすることができます想像していない。私は、他の人がこれまでと同じ必要性を持っていると信じなければならないが、広範な検索は、私が必要とする既存の機能につながっていない。

+0

私は「ポリゴンRの内側を指している」と言い、最初の結果は[this](https://stat.ethz.ch/pipermail/r-help/2009-February/187435)でした。html)が有望ないくつかの方向を指しているようだ。例えば** splancs **パッケージです。 – joran

答えて

1

正方形のグリッド上でこのような位置付けをしていたように聞こえたので、より一般的なポリゴンアプローチが必要とするよりも簡単かもしれません。このgrid-on-the-squareの座標が2つのベクトル 'xx'と 'yy'で、data.frameまたはmatrixのポイントリストが 'mypoints'であるとします。これは、適切なサブ広場をルックアップするために行-COL-指標のマトリックスを作成します。

xx <- seq(0,1,by=.1) 
yy <- seq(0,1,by=.1) 
mypoints <- matrix(runif(10), ncol=2) 
head(mypoints) 
#--------------- 
      [,1]  [,2] 
[1,] 0.7731868 0.2707768 
[2,] 0.7005779 0.7881789 
[3,] 0.9520941 0.6661852 
[4,] 0.4625906 0.9176813 
[5,] 0.4550811 0.5017386 
#--------------- 
findInterval(mypoints[1:5,1], xx) 
#[1] 8 8 10 5 5 
findInterval(mypoints[1:5,2], yy) 
#[1] 3 8 7 10 6 
pointidxs <- matrix(c(findInterval(mypoints[,1], xx), 
         findInterval(mypoints[,2], yy)), ncol=2) 
head(pointidxs) 
#-------------- 
    [,1] [,2] 
[1,] 8 3 
[2,] 8 8 
[3,] 10 7 
[4,] 5 10 
[5,] 5 6 
2

日の冷光に

うーんを[spsampleについてつぶやくが削除]あなたが何かをしたいようです:

すべてのポリゴンが矩形になっていて、その矩形上に点の規則的なグリッドを作成したい場合は、グリッド座標のSpatialPointsオブジェクトを作成します(そのサブ問題の解決方法の一部については、expand.gridを参照)。次に、package:spの 'overlay'を使用して、グリッドポイントが入っているポリゴンをテストします。

bboxを使用してポリゴンの範囲を取得することもできます。

1

私はあまり考えていませんでしたが、前コーヒーのアイデアがあります。あなたのポリゴンがボロノイの模様を形成していることを理解しています。ここでは対応するDelaunay三角形分割を簡単に取得することができます。これにより、特定の点が対応するポリゴンに属するかどうかを簡単に判断できます。

希望は意味がありますか?

関連する問題