2016-04-24 5 views
1

私はできるだけ具体的にしようと考えています。 さて、ブラジルには52,000ポイントのファイルがあり、森林残骸の地図(ポリゴン形式)があります。バッファー距離内でポイントからマルチポリゴンまでの距離を教える方法R

私がしたいことは、各ポイントからバッファ内にある各フォレストフラグメントまでの距離を、たとえば500mと計算することです。ですから、私が500mのバッファー内に3つの断片を持っていれば、これらの断片に重心(焦点)から3つの距離(真核生物)を計算したいと思います。

最後に、各焦点からそれぞれの断片までの平均距離を取得したいと思います。

Iは、以下のようなパッケージ "rgeos" から、機能gWithinDistanceを試みた:

near_frag_500 < - gWithinDistance(点、veg_natural、500、byid = T)引数である

私の焦点を「ポイント」し、森の残りのポリゴンを「veg_natural」します。 500番は500mのバッファを指し、距離を計算したい。ただし、この関数の出力は、TRUEまたはFALSEの値を持つ行列です。 500mバッファ内にあるポリゴンについてはTRUE、500mバッファ外にあるポリゴンについてはFALSEを返します。それは私に計算された距離の実際の値を与えてくれません。私が探しているのは、ArcGISの "Generate Near Table"機能と同等です。

誰かが私を助けることができたら本当にありがとう!私はラスタファイルを使ってそのための解決策があれば、私の森の残りのポリゴンをラスタに持っています。

どうもありがとう、

ララ

答えて

0

私は7ポイントと8つのポリゴンで設定簡単なテストを行っています。すべてがメートル単位のデカルト系に投影されなければならないので、lat-longではありません。他に何もない場合は、ローカルのUTMゾーンを使用してください。

Iポイントからポリゴンまでの距離行列を計算する:

> dmat = gDistance(points, veg_natural,byid=TRUE) 

そして500以上のものをマスク、および行を計算する手段:

> dmat[dmat>500]=NA 
> apply(dmat, 1, mean, na.rm=TRUE) 
     0  1  2  3  4  5  6  7 
331.5823 262.7129 380.2073 187.2068 111.9961  NaN 224.6962 360.7995 

それはからの距離の平均であります各点は500m以内の最も近いフィーチャを指します。ポイント5のNaNは、どのポリゴンフィーチャからも500mでないためです。

この行列が大きすぎて52,000ポイント(およびポリゴンはありませんか?)の場合、一度に1000ポイントずつループで処理してください。私は私が52,000で落ちると思う。

あなたが各ポイントの500メートル以内のものをしているポリゴンのかを知りたい場合は、何かのように:

> apply(dmat,1, function(r){which(!is.na(r))}) 
$`0` 
5 6 
5 6 

$`1` 
4 5 7 
4 5 7 

は(ラベル0)私の最初のポイントは、多角形5と6

に近くであることを示しています
関連する問題