'টপোলজি এক্সপ্লেশন: ইনপুট জিওম 1 অবৈধ' স্ব-ছেদ ত্রুটি যা অবৈধ বহুভুজ জ্যামিতি থেকে উদ্ভূত হয়েছে তা ব্যাপকভাবে আলোচিত হয়েছে। তবে আমি ওয়েবে এমন কোনও সুবিধাজনক সমাধান খুঁজে পাইনি যা সম্পূর্ণরূপে আর কার্যকারিতার উপর নির্ভর করে।
উদাহরণস্বরূপ, আমি এখানেmap("state", ...)
জোশ ওব্রায়নের চমৎকার উত্তর অনুসরণ করার ফলাফল থেকে একটি 'স্প্যাটিয়ালপলিজন' অবজেক্ট তৈরি করতে সক্ষম হয়েছি ।
library(maps)
library(maptools)
map_states = map("state", fill = TRUE, plot = FALSE)
IDs = sapply(strsplit(map_states$names, ":"), "[[", 1)
spydf_states = map2SpatialPolygons(map_states, IDs = IDs, proj4string = CRS("+init=epsg:4326"))
plot(spydf_states)
এই ব্যাপকভাবে প্রয়োগ করা ডেটাসেটের সমস্যাটি এখন স্ব-ছেদটি নীচে দেওয়া পয়েন্টে ঘটে।
rgeos::gIsValid(spydf_states)
[1] FALSE
Warning message:
In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") :
Self-intersection at or near point -122.22023214285259 38.060546477866055
দুর্ভাগ্যক্রমে, এই সমস্যাটি 'স্পাইডফ_স্টেটস' এর আরও কোনও ব্যবহার প্রতিরোধ করে, যেমন কল করার সময় rgeos::gIntersection
। আমি কীভাবে এই সমস্যার সমাধান করব?
plot(spydf_states, xlim=c(-122.1,-122.3),ylim=c(38,38.1))
আপনি দেখতে পাবেন এটি সম্পর্কে কোনও "আপাতদৃষ্টিতে" নেই - একটি স্ব-ছেদ রয়েছে।