ฉันใช้เวลาเล็กน้อยในการหาคำตอบสำหรับคำถามนี้ ไม่ชัดเจนในทันทีจากการค้นหาของ Googleดังนั้นคิดว่าอาจมีประโยชน์ในการโพสต์คำตอบที่นี่ นอกจากนี้ยังมีคำถามเพิ่มเติมเกี่ยวกับรูปหลายเหลี่ยมไม่ต่อเนื่องกัน
คำตอบง่าย ๆ ทันที: ใช้คำสั่ง:
centroids <- getSpPPolygonsLabptSlots(polys)
(ซึ่งพบได้ในคำอธิบายคลาสของคลาสข้อมูล SpatialPolygonsDataFrame R สำหรับแพ็คเกจอวกาศที่ครอบคลุมใน R, sp )
ดูเหมือนว่าจะทำสิ่งเดียวกัน
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
ในรหัสต่อไปนี้ซึ่งควรทำซ้ำในการติดตั้ง R ใด ๆ (ลองใช้!)
#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")
ตำแหน่งที่เซ็นต์ (สีน้ำเงิน) และเซนทรอยด์ (สีแดง) เป็นเซนทรอยด์ที่เหมือนกัน (นี่ควรพล็อตควรปรากฏขึ้นหลังจากที่คุณเรียกใช้รหัส):
จนถึงตอนนี้ดีมาก แต่เมื่อคุณคำนวณรูปหลายเหลี่ยม centroids ใน QGIS (เมนู: เวกเตอร์ | เรขาคณิต | รูปหลายเหลี่ยม Centroids) ผลลัพธ์ที่แตกต่างกันเล็กน้อยสำหรับรูปหลายเหลี่ยมที่ไม่ต่อเนื่องกัน:
ดังนั้นคำถามนี้คือ 3 สิ่ง:
- คำตอบที่ง่ายและรวดเร็ว
- คำเตือนสำหรับผู้ที่ใช้ R เพื่อคำนวณ centroids สำหรับรูปหลายเหลี่ยมที่ไม่ต่อเนื่องกัน
- คำถามเกี่ยวกับวิธีการที่ควรทำใน R เพื่ออธิบายรูปหลายเหลี่ยมแบบหลายส่วน (ไม่ต่อเนื่อง)