Ho trascorso un po 'a capire la risposta a questa domanda. Non è immediatamente ovvio da una ricerca su Google , quindi ho pensato che potesse essere utile pubblicare la risposta qui. C'è anche un'altra domanda sui poligoni non contigui .
Risposta semplice istantanea: utilizzare il comando:
centroids <- getSpPPolygonsLabptSlots(polys)
(Questo è stato trovato nella descrizione della classe della classe di dati SpatialPolygonsDataFrame R per il pacchetto spaziale generale in R, sp )
Questo sembra fare esattamente la stessa cosa di
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
nel seguente codice, che dovrebbe essere replicabile su qualsiasi installazione R (provalo!)
#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")
Dove centesimi (blu) e centroidi (rosso) sono identici centroidi (questo dovrebbe apparire dopo aver eseguito il codice):
Fin qui tutto bene. Ma quando si calcolano i centroidi poligonali in QGIS (menu: Vector | Geometry | Polygon Centroids), ci sono risultati leggermente diversi per i poligoni non contigui:
Quindi questa domanda è di 3 cose:
- Una risposta semplice e veloce
- Un avvertimento per le persone che usano R per calcolare i centroidi per poligoni non contigui
- Una domanda su come dovrebbe essere fatto in R per tenere correttamente conto dei poligoni multi-parte (non contigui)