Pasé un rato averiguando la respuesta a esta pregunta. No es inmediatamente obvio en una búsqueda en Google , por lo que pensé que podría ser útil publicar la respuesta aquí. También hay una pregunta adicional sobre polígonos no contiguos .
Respuesta fácil instantánea: use el comando:
centroids <- getSpPPolygonsLabptSlots(polys)
(Esto se encontró en la descripción de la clase de la clase de datos SpatialPolygonsDataFrame R para el paquete espacial global en R, sp )
Esto parece hacer exactamente lo mismo que
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
en el siguiente código, que debería ser replicable en cualquier instalación de R (¡pruébelo!)
#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")
Donde los centavos (azul) y los centroides (rojo) son centroides idénticos (este gráfico debería aparecer después de ejecutar el código):
Hasta aquí todo bien. Pero cuando calcula los centroides de polígonos en QGIS (menú: Vector | Geometría | Centroides de polígonos), hay resultados ligeramente diferentes para los polígonos no contiguos:
Entonces esta pregunta es de 3 cosas:
- Una respuesta rápida y fácil.
- Una advertencia para las personas que usan R para calcular los centroides para polígonos no contiguos
- Una pregunta sobre cómo se debe hacer en R para tener en cuenta adecuadamente los polígonos de varias partes (no contiguas)