Tôi đã dành một chút thời gian để tìm ra câu trả lời cho câu hỏi này. Nó không rõ ràng ngay lập tức từ một tìm kiếm Google , vì vậy nghĩ rằng nó có thể hữu ích để đăng câu trả lời ở đây. Ngoài ra còn có một câu hỏi bổ sung về đa giác không tiếp giáp .
Câu trả lời dễ dàng ngay lập tức: sử dụng lệnh:
centroids <- getSpPPolygonsLabptSlots(polys)
(Điều này đã được tìm thấy trong mô tả lớp của lớp dữ liệu SpatialPolygonsDataFrame R cho gói không gian bao trùm trong R, sp )
Điều này dường như làm chính xác như
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
trong đoạn mã sau, có thể được sao chép trên bất kỳ cài đặt R nào (hãy thử nó!)
#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")
Trong đó xu (màu xanh) và centroid (màu đỏ) là các centroid giống hệt nhau (biểu đồ này sẽ xuất hiện sau khi bạn chạy mã):
Càng xa càng tốt. Nhưng khi bạn tính toán các đa giác đa giác trong QGIS (menu: Vector | Geometry | Polygon Centroid), có các kết quả hơi khác nhau cho các đa giác không liền kề:
Vì vậy, câu hỏi này là 3 điều:
- Một câu trả lời nhanh chóng và dễ dàng
- Một cảnh báo cho những người sử dụng R để tính toán trọng tâm cho đa giác không liền kề
- Một câu hỏi về cách nó nên được thực hiện trong R để giải thích chính xác cho đa giác (không liền kề)