2016-04-24 92 views
1

因此,我在R中很新,所以我會盡量做到儘可能具體。 那麼,我有一個文件在巴西分發了52,000個點和一個森林殘餘物(多邊形格式)的地圖。如何計算從點到多邊形的距離在R中的緩衝距離

我想要做的是計算從每個點到例如500m的緩衝區內的每個森林片段的距離。所以,如果我在500米的緩衝區內有3個片段,我想要從質心(焦點)計算出這三個距離(歐幾里得)到這些片段。

最後我想從每個焦點到它們各自的片段的平均距離。

我試圖功能gWithinDistance,從包裝 「rgeos」,象下面這樣:

near_frag_500 < - gWithinDistance(點,veg_natural,500,byid = T)

作爲參數「點」我的焦點和「veg_natural」我的森林剩餘多邊形。數字500指500米的緩衝區我想計算距離。但是,該函數的輸出是一個帶有TRUE或FALSE值的矩陣。對於落在500m緩衝區內的多邊形爲TRUE,對於在500m緩衝區外的多邊形爲FALSE。它不會給我所計算距離的實際值。我猜我在找什麼等同於ArcGIS中的「生成近表」功能。

我真的很感激,如果有人可以幫助我!如果有任何使用光柵文件的解決方案,我還會在柵格中使用我的森林殘餘多邊形。

非常感謝,

拉拉

回答

0

我做了一個簡單的測試中得到7分和8個多邊形設置。所有東西都必須以米爲單位投影到笛卡爾系統,所以不是經緯度。如果沒有別的,請使用本地UTM區域。

我計算距離矩陣從點爲多邊形:

> 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 

,這是從所述距離的平均每個點指向500米內的最近的特徵。注意點5的NaN,這是因爲它不是距離任何多邊形要素500m。

如果這個矩陣是太大了,你的情況與52000點(和??多邊形?)然後就去做了1000點,在一個循環或任何你的電腦可以應付一段時間。我認爲我的52000會跌倒。

如果你想知道哪些多邊形是在每個點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