He pasado un poco de tiempo averiguando la respuesta a esta pregunta. No es inmediatamente obvia de un Búsqueda en Google así que pensé que podría ser útil poner la respuesta aquí. También hay una pregunta adicional sobre polígonos no contiguos .
Respuesta fácil e instantánea: usa el comando:
centroids <- getSpPPolygonsLabptSlots(polys)
(Esto se encontró en el 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 R (¡pruébalo!)
#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 (esto debería aparecer después de ejecutar el código):
Hasta ahora todo bien. Pero cuando se calculan los centros de los polígonos en QGIS (menú: Vector | Geometría | Centros de los polígonos), hay resultados ligeramente diferentes para los polígonos no contiguos:
Así que esta pregunta es tres cosas:
- Una respuesta rápida y fácil
- Una advertencia para las personas que usan R para calcular los centros de los polígonos no contiguos
- Una pregunta sobre cómo debe hacerse en R para contabilizar adecuadamente los polígonos de varias partes (no contiguos)
0 votos
Necesito saber Cómo puedo citar la función centroide explicada anteriormente. Gracias
0 votos
Bienvenido a GIS StackExchange Como nuevo usuario, por favor haz el recorrido . Esto parece ser una nueva pregunta, más que una respuesta a esta pregunta. Por favor, publique como una nueva pregunta.