3

この質問からareaPolygon()、座標のポリゴン内の面積を与える素晴らしい関数を取得しました。ただし、関数を試してみると、計算が奇妙に見えます。

2 つのポイントのセットを作成することから始めます

 require(fields)
 coords <- c(11.3697193956209, 47.233380520521, 11.3723606043791, 
 47.235179479479)
 coords <- matrix(coords, nrow=2, ncol=2, byrow=TRUE)

次に、これら 2 つの間の距離を確認します。

 rdist.earth(coords,coords,miles=FALSE)[1,2]

取得: 0.2827821 キロメートル (長方形の対角線になります)

長方形の作成を続けます

 polygon <- matrix(coords, nrow=2, ncol=2)
 polygon <- rbind(polygon, polygon)
 polygon[4,2] <- polygon[1,2]
 polygon[4,1] <- polygon[2,1]
 polygon[3,2] <- polygon[2,2]
 polygon[3,1] <- polygon[1,1]
 polygon <- rbind(polygon, polygon[1,])

これがうまくいくかどうかを確認してください:plot(polygon)

ステップ 4: ポリゴン内の面積を計算します。

geosphere::areaPolygon(polygon)
[1] 31.99288 #from the help file I know this ought to be square metres.

200*200=40000 m²ただし、長方形の辺は 200 x 200 メートルなので、予想していたでしょう。これは次の方法で確認できます

rdist.earth(polygon,coords,miles=FALSE)

           [,1]         [,2]
 [1,] 0.0000000 2.827821e-01
 [2,] 0.2827821 9.504539e-05
 [3,] 0.2002671 1.996434e-01
 [4,] 0.1996501 2.002671e-01

だから私の質問に来て(最後に)私は何が間違っているのですか?ご助力ありがとうございます!

4

1 に答える 1

5

無効なポリゴンを作成しました!一緒にプロットするとtype="l"、蝶ネクタイが表示されます。

> plot(polygon,type="l")

蝶ネクタイの半分は負の領域になり、残りの半分は正になるので、結果は半分のサイズの違いになります。地球が球形であるため、それらは完全に同じにはなりません...

でポイントを並べ替える必要がありますpolygon

于 2012-09-28T11:11:33.663 に答える