Я витратив трохи часу, з'ясовуючи відповідь на це питання. Це не очевидно з пошуку в Google , тому я вважаю, що може бути корисно опублікувати відповідь тут. Також є додаткове запитання щодо безперервних багатокутників .
Миттєва відповідь: скористайтеся командою:
centroids <- getSpPPolygonsLabptSlots(polys)
(Це було знайдено в описі класу класу даних SpatialPolygonsDataFrame R для всебічного просторового пакету в R, sp )
Здається, це робиться точно так само, як і
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, щоб правильно врахувати багаточастинні (непоміжні) багатокутники