Bu sorunun cevabını bulmak için biraz zaman harcadım. Bir Google aramasından hemen belli olmadığından , cevabı buraya göndermenin yararlı olabileceğini düşündüm. Bitişik olmayan poligonlar hakkında ek bir soru da var .
Anında kolay cevap: komutu kullanın:
centroids <- getSpPPolygonsLabptSlots(polys)
(Bu bulunmuştur sınıf açıklama R kapsayıcı uzamsal paket için SpatialPolygonsDataFrame R veri sınıfı, sp )
Bu tam olarak aynı şeyi yapmak gibi görünüyor
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
Aşağıdaki kodda, herhangi bir R kurulumunda çoğaltılabilir olması gerekir (deneyin!)
#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")
Sentlerin (mavi) ve centroidlerin (kırmızı) özdeş centroidler olduğu yerlerde (kodu çalıştırdıktan sonra bu grafik görüntülenmelidir):
Çok uzak çok iyi. Ancak QGIS'de poligon centroidleri hesapladığınızda (menü: Vector | Geometry | Polygon Centroids), bitişik olmayan poligonlar için biraz farklı sonuçlar vardır:
Yani bu soru 3 şeydir:
- Hızlı ve kolay cevap
- Bitişik olmayan çokgenler için centroid hesaplamak için R kullanan insanlar için bir uyarı
- Çok parçalı (bitişik olmayan) çokgenleri düzgün bir şekilde hesaba katmak için R'de nasıl yapılması gerektiği hakkında bir soru