'टोपोलॉजीएक्सैसेप्शन: इनपुट जियोम 1 अमान्य है' स्व-प्रतिच्छेदन त्रुटि जो अवैध बहुभुज ज्यामिति से उत्पन्न होती है, पर व्यापक रूप से चर्चा की गई है। हालाँकि, मुझे वेब पर एक सुविधाजनक समाधान नहीं मिला है जो केवल R कार्यक्षमता पर निर्भर करता है।
उदाहरण के लिए, मैं यहाँ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
दुर्भाग्य से, यह समस्या 'spydf_states' के किसी भी आगे के उपयोग को रोकती है, जैसे कॉल करते समय rgeos::gIntersection
। मैं R के भीतर से इस मुद्दे को कैसे हल कर सकता हूं?
plot(spydf_states, xlim=c(-122.1,-122.3),ylim=c(38,38.1))
आप देखेंगे कि इसके बारे में कोई "उचित रूप से" नहीं है - एक आत्म-प्रतिच्छेदन है।