この質問の答えを考え出すのに少し時間を費やしました。Google検索からすぐに明らかではないので、ここに回答を投稿すると便利だと思います。連続していないポリゴンに関する追加の質問もあります。
簡単な答え:次のコマンドを使用します。
centroids <- getSpPPolygonsLabptSlots(polys)
(これは、R、spの包括的な空間パッケージのSpatialPolygonsDataFrame Rデータクラスのクラスの説明で見つかりました)
これはまったく同じことをするようです
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
次のコードでは、どのRインストールでも複製可能であるはずです(試してみてください!)
#Rcentroids
install.packages("GISTools")
library(GISTools)
sids <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1],
proj4string=CRS("+proj=longlat +ellps=clrk66"))
class(sids)
plot(sids)
writeSpatialShape(sids, "sids")
cents <- coordinates(sids)
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data,
proj4string=CRS("+proj=longlat +ellps=clrk66"))
points(cents, col = "Blue")
writeSpatialShape(cents, "cents")
centroids <- getSpPPolygonsLabptSlots(sids)
points(centroids, pch = 3, col = "Red")
セント(青)とセントロイド(赤)は同一のセントロイドです(コードを実行するとプロットが表示されます)。
ここまでは順調ですね。しかし、QGISで多角形の重心を計算すると(メニュー:ベクトル|ジオメトリ|多角形の重心)、不連続な多角形の結果はわずかに異なります:
したがって、この質問は3つです。
- すばやく簡単な答え
- Rを使用して非連続ポリゴンの重心を計算する場合の警告
- マルチパート(非連続)ポリゴンを適切に説明するためにRでどのように行うべきかについての質問