स्थानिक एस डेटा एस 4 श्रेणी की वस्तुएं हैं और ये स्लॉट्स से बनी होती हैं (जिन्हें @ का उपयोग करके बुलाया जाता है) जिसमें स्थानिक फीचर क्लास के घटकों का प्रतिनिधित्व किया जाता है (उदाहरण के लिए, @data में विशेषताएँ होती हैं, @coord में समन्वित जोड़े, आदि ...) होते हैं। आप स्लॉट के नाम () का उपयोग करके शीर्ष स्तर के स्लॉट नामों को वापस कर सकते हैं लेकिन यह पुनरावर्ती नहीं है और बहुभुज वर्ग की वस्तुओं के लिए नेस्टेड स्लॉट नामों को वापस नहीं करेगा। प्रत्येक स्लॉट में एक अलग ऑब्जेक्ट क्लास हो सकता है और, उस पर काम करने से पहले, str () या क्लास () का उपयोग करके जांच की जानी चाहिए। @Data स्लॉट हमेशा एक data.frame ऑब्जेक्ट है और @coords एक मैट्रिक्स है जबकि @polygons अतिरिक्त स्लॉट्स (लैप्ट, एरिया, होल, रिंगडायर और कोर्ड्स) के साथ एक सूची ऑब्जेक्ट है।
उनमें से उपलब्ध स्लॉट और संगठन इस बात पर निर्भर करता है कि किस प्रकार के फीचर वर्ग का प्रतिनिधित्व किया जा रहा है। SpatialPointsDataFrame ऑब्जेक्ट सबसे बुनियादी हैं, जबकि SpatialPolygonsDataFrame ऑब्जेक्ट्स में नेस्टिंग (जैसा कि ऊपर देखा गया है) है। इस नेस्टेड संरचना, प्रत्येक बहुभुज का प्रतिनिधित्व करते हुए, प्रत्येक सूची ऑब्जेक्ट (बहुभुज) पर संचालित करने के लिए नीलम जैसी चीज़ का उपयोग करने के लिए जिम्मेदार होना चाहिए।
यहां एक उदाहरण है जो प्रत्येक बहुभुज के लिए क्षेत्र को "पॉलीगॉन" के माध्यम से पुनरावृत्ति करके नीप का उपयोग करता है, फिर, नेस्टेड, "क्षेत्र" स्लॉट (एस)।
sapply(slot(sdat, 'polygons'), function(i) slot(i, 'area'))
बहुभुज वस्तुओं के मामले में, चूंकि वे प्रत्येक बहुभुज के लिए एक सूची के रूप में संग्रहीत होते हैं, आप वैकल्पिक रूप से सूची अनुक्रमण का उपयोग कर सकते हैं। यहाँ पहला बहुभुज लौटाने का एक उदाहरण है (जिसके परिणामस्वरूप "बहुभुज" वर्ग वस्तु है और न कि SpatialPolygonsDataFrame):
sdat@polygons[[1]]
हाल ही के संस्करणों में, डेवलपर्स ने कुछ उदाहरणों में, सीधे @data स्लॉट को कॉल करने की आवश्यकता को हटा दिया है।
उदाहरण के लिए, @data को पहले से अनुक्रमणित करने के लिए:
sdat@data[sdat@data$att >= 0.5 ,]
और अब:
sdat[sdat$att >= 0.5 ,]
हालांकि, जैसा कि पहले संकेत दिया गया है, यह अन्य स्लॉट्स (उदाहरण के लिए, निर्देशांक, बहुभुज, आदि ...) के लिए ऐसा नहीं है। जहां तक कब उपयोग करना है [] या $ यह अभी भी ऑपरेशन के प्रकार पर निर्भर है। ब्रैकेट "[]" का उपयोग डेटाफ्रेम में एक नाम को कॉल करने के लिए किया जा सकता है लेकिन मुख्य रूप से इंडेक्सिंग के लिए उपयोग किया जाता है जबकि $ विशेष रूप से एक डेटाफ्रेम में एक कॉलम को कॉल करने के लिए उपयोग किया जाता है। कारण कि स्तंभ नाम के लिए "अप्रत्यक्ष" कॉल काम करता है कि डेवलपर्स ने sp ऑब्जेक्ट के माध्यम से पुनरावर्ती खोज के लिए अनुमति देने के लिए कार्यक्षमता को जोड़ा है। हालाँकि, नाम की उलझनों से बचने के लिए (जैसा कि आपके उदाहरण में; x, y आपके डेटाफ़्रेम में y कॉलम x, ycoord मैट्रिक्स के नामों में y के साथ संघर्ष करेगा) कुछ आंतरिक स्थिरता जाँच रही है कि यह केवल कुछ में काम क्यों करता है उदाहरणों।
एक सुविधाजनक विशेषता यह है कि आप एक पंक्ति सूचकांक के माध्यम से एक स्थानिक वस्तु को कम कर सकते हैं। यहां मैं पहले 10 ऑब्जेक्ट्स सब्मिट कर रहा हूं।
sub.sdat <- sdat[1:10,]
या, वैकल्पिक रूप से, एक पंक्ति सूचकांक वेक्टर का उपयोग करके एक यादृच्छिक नमूना (एन = 10)।
rs.sdat <- sdat[sample(1:nrow(sdat), 10),]
R कोड लिखने में इंडेक्सिंग और कोष्ठक का उपयोग कैसे करना है, यह समझना बहुत महत्वपूर्ण है।
संपादित करें (03/24/2017): कृपया ध्यान दें कि सरल फ़ीचर (sf) वर्ग, GeoJSON मानक का अनुसरण करते हुए, संभवतः R में स्थानिक वस्तुओं के लिए नया मानक बन जाएगा। आप CRAN sf पर इस वर्ग का विस्तृत विवरण पढ़ सकते हैं आर के लिए वेबसाइट सरल सुविधाएँ ।
R
वाक्य रचना के बारे में एक प्रश्न है , यह विशेष रूप सेsp
पैकेज या इसके ऑब्जेक्ट के लिए नहीं है।R
एक ट्यूटोरियल के साथ स्थापित किया गया है: अपने शोध में वहाँ शुरू करें। वेब और प्रिंट मीडिया सीखने के लिए अतिरिक्त संसाधनों का खजाना प्रदान करते हैंR
।