আমি এই প্রশ্নের উত্তর খুঁজে পেতে কিছুটা সময় ব্যয় করেছি। এটি গুগল অনুসন্ধান থেকে তাত্ক্ষণিকভাবে স্পষ্ট নয় , সুতরাং ভেবেছি উত্তরটি এখানে পোস্ট করা কার্যকর হতে পারে। অবিচ্ছিন্ন বহুভুজ সম্পর্কে একটি অতিরিক্ত প্রশ্নও রয়েছে ।
তাত্ক্ষণিক সহজ উত্তর: কমান্ডটি ব্যবহার করুন:
centroids <- getSpPPolygonsLabptSlots(polys)
(এই পাওয়া যায় বর্গ বিবরণ দ সর্বোচ্চ স্থানিক প্যাকেজের জন্য SpatialPolygonsDataFrame আর ডেটা ক্লাসের, SP )
এই হিসাবে ঠিক একই জিনিস বলে মনে হচ্ছে
cents <- SpatialPointsDataFrame(coords=cents, data=sids@data, proj4string=CRS("+proj=longlat +ellps=clrk66"))
নিম্নলিখিত কোডে, যা কোনও আর ইনস্টলেশনে প্রতিলিপিযোগ্য হওয়া উচিত (এটি চেষ্টা করুন!)
#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")
যেখানে সেন্ট (নীল) এবং সেন্ট্রয়েডস (লাল) অভিন্ন সেন্ট্রয়েড থাকে (কোডটি চালানোর পরে এটি প্লট হওয়া উচিত):
এ পর্যন্ত সব ঠিকই. কিন্তু আপনি কিউজিআইএস-এ বহুভুজ সেন্ট্রয়েডগুলি গণনা করার সময় (মেনু: ভেক্টর | জ্যামিতি | বহুভুজ সেন্ট্রয়েড) অ-স্বতন্ত্র বহুভুজগুলির জন্য কিছুটা আলাদা ফলাফল পাওয়া যায়:
সুতরাং এই প্রশ্নটি 3-জিনিস:
- একটি দ্রুত এবং সহজ উত্তর
- অন-সংলগ্ন বহুভুজগুলির জন্য সেন্ট্রয়েড গণনা করতে আর ব্যবহারকারী লোকদের জন্য একটি সতর্কতা
- মাল্টি-পার্ট (নন-কনজিস্টিউজ) বহুভুজের সঠিকভাবে অ্যাকাউন্টে এটি কীভাবে করা উচিত সে সম্পর্কে একটি প্রশ্ন