3

ポイントとポリゴン境界の間の最小距離を見つけたいと思います(すべてのポイントはポリゴン内にあります)。それが可能な場合、どのように値を抽出できますか? ということで、個体数と境界からの距離との相関関係を見つけることができます。

ポリゴンは .SHP 形式で、X/Y 座標をポイントします。

不足している情報があれば教えてください!あなたの助けは大歓迎です!

4

3 に答える 3

7

単位正方形ポリゴン:

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

于 2015-02-07T17:21:49.440 に答える
3

@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は距離のベクトルです。

于 2015-02-07T22:10:53.033 に答える
3

このspatstatパッケージには、nncross2 組の点または 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)
于 2015-02-07T14:38:29.737 に答える