1

R を使用して、poly_center (pracma パッケージ) を使用して、このファイルで読み込まれた図によって定義されたポリゴンの重心を計算しています。

奇妙なことに、私が得ている結果はポリゴンの境界から外れており、中心点が x (経度) と y (緯度) 軸/座標の最小値の両方よりも低くなっています (以下のコードを参照)。私が間違っていること、またはここで何が起こっているのか、誰かが私にヒントを与えることができますか?

    # loading needed packages
    require(pracma)
    require(sp)
    t <- read.csv(file="testcm.txt",head=FALSE,row.names=NULL)[-1,] # readind file
    attach(t)
    lon <- V1
    lat <- V2
    cm <- poly_center(lon,lat) # center of mass
    cm
    [1] -49.92585 -16.52163
    min(lon)
    [1] -49.05978
    min(lat)
    [1] -16.45963
    plot(coordinates(t), type="n", xlab="longitude", ylab="latitude", xlim=c(-65,-40) , ylim=c(-35,-10)) # drawing base contours
    polygon(lon, lat, border = "red") # drawing polygon
    points(cm[1],cm[2], pch=22, col="blue") # drawing center of mass
4

1 に答える 1

0

を見るとpoly_center、ポリゴン座標の最初の行も最後にバインドする必要がある場合があります。コードが最後のポイントを最初のポイントにラップすることを説明しているようには見えません。

試す

tmp <- rbind(coordinates(t), coordinates(t)[1,])
points(t(poly_center(tmp[,1], tmp[,2])), col="green", pch=16)
于 2015-08-06T21:34:14.120 に答える