ポイントとポリゴン境界の間の最小距離を見つけたいと思います(すべてのポイントはポリゴン内にあります)。それが可能な場合、どのように値を抽出できますか? ということで、個体数と境界からの距離との相関関係を見つけることができます。
ポリゴンは .SHP 形式で、X/Y 座標をポイントします。
不足している情報があれば教えてください!あなたの助けは大歓迎です!
単位正方形ポリゴン:
library(sp)
x = cbind(c(0,1,1,0,0),c(0,0,1,1,0))
pol = SpatialPolygons(list(Polygons(list(Polygon(x)), "ID")))
単位正方形のランダムな点:
set.seed(131)
pts = SpatialPoints(cbind(runif(10), runif(10)))
plot(pol)
points(pts, col = 'red')
距離を計算します:
library(rgeos)
gDistance(pts, pol, byid = TRUE) # will be 0, all inside
gDistance(pts, as(pol, "SpatialLines"), byid = TRUE) # dist to line
プロットに追加:
text(coordinates(pts),
as.character(
round(as.vector(gDistance(pts, as(pol, "SpatialLines"), byid = TRUE)), 3)),
pos = 4)
readOGR
パッケージ内で使用して、シェープファイルから R にポリゴン データを読み込みますrgdal
@xraynaud の手順に従います (わずかに変更されています)。
library(maptools)
shp = readShapeSpatial("yourdata.shp") #read shp file
W = as.owin(shp) # convert to owin object
library(spatstat)
p = ppp(x, y, window = W)
これp
は、ポリゴンによって囲まれたポイントを含むポイント パターンです。各ポイントから境界ポリゴン (通常、spatstat
用語ではウィンドウと呼ばれます) までの距離を計算するには:
d = bdist.points(p)
今d
は距離のベクトルです。
このspatstat
パッケージには、nncross
2 組の点または 1 組の点と一連の線分の間の最近傍を見つける機能があります。
x/y 値のセットを読み込んでスパットスタット ポイント パターン オブジェクトを作成するのは比較的簡単です。X と Y が座標を含む 2 つのベクトルである場合、次のコマンドでポイント パターン オブジェクトを作成できます。
library(spatstat)
p = ppp(x,y)
shp データを spatstat セグメント パターン オブジェクトに変換する必要があります。これを行うには、maptools からコマンドを使用して shp ファイルをロードし、spatstat オブジェクトに変換します。
library(maptools)
shp = readShapeSpatial("yourdata.shp") #read shp file
shp = as.psp(shp) # convert to psp object
最近隣距離を計算するには、nncross を使用する必要があります。
nncross(p,shp)