आर का उपयोग हिस्टोग्राम विश्लेषण के लिए ग्रिड डेटाफ्रेम में बिंदु डेटा परिवर्तित?


14

मैं जीआईएस डेटा का उपयोग करने में बहुत नया हूं और केवल आर के साथ मामूली रूप से अनुभवी। मैं इसके बारे में पढ़ रहा हूं कि कैसे स्थानिक डेटा का उपयोग करके स्थानिक डेटा का उपयोग किया जाता है। पीडीएफ पुस्तक, इसलिए मैं पूरी तरह से खो नहीं गया हूं, लेकिन मुझे लगा कि मैं वर्णन कर सकता हूं मेरी समस्या और लोग सुझाव दे सकते हैं।

मेरे पास अलग-अलग लाट / लंबे निर्देशांकों में लगभग 2000 मापों के साथ एक डेटासेट है, हालांकि मैं इस डेटासेट को शायद उपविभाजित करूंगा क्योंकि 3 साल में डेटा एकत्र किया गया था और समय के साथ स्थितियां बदल गई थीं। चलो चर को "आईपी" मापा जा रहा है।

मैं नमूना डेटा पर क्रिपिंग या कुछ अन्य प्रक्षेप विधि का उपयोग करके प्रश्न के तहत पूरे क्षेत्र में आईपी का नक्शा बनाना चाहता हूं। फिर मैं विभिन्न आईपी बाल्टियों में भूमि की मात्रा को मापने वाला एक हिस्टोग्राम बनाना चाहता हूं। मुझे एक हिस्टोग्राम बनाने की भी आवश्यकता होगी जो प्रत्येक बाल्टी में नमूनों की संख्या को दर्शाता है (ध्यान दें कि एक नमूना एक उच्च या निम्न वास्तविक आईपी हो सकता है जो अपनी भूमि के लिए भविष्यवाणी करता है)।

मैं अनुसरण करता हूं कि डेटा को SpatialPointsDataFrame में कैसे लोड किया जाए और किसिंग विश्लेषण चलाया जाए, जहां मुझे परेशानी हो रही है कि कैसे उस डेटा को एक ग्रिड डेटाफ़्रेम में परिवर्तित किया जाए ताकि मैं हिस्टोग्राम विश्लेषण कर सकूं।

बिंदुओं को ग्रिड में परिवर्तित करने के लिए कोई सुझाव?

जवाबों:


12

तुम सही हो ... यह बहुत आसान है! "रेखापुंज" पैकेज में चूहों को बनाने और हेरफेर करने से निपटने के कुछ बहुत सरल तरीके हैं।

library(maptools)
library(raster)

# Load your point shapefile (with IP values in an IP field):
pts <- readShapePoints("pts.shp")

# Create a raster, give it the same extent as the points
# and define rows and columns:

rast <- raster()
extent(rast) <- extent(pts) # this might be unnecessary
ncol(rast) <- 20 # this is one way of assigning cell size / resolution
nrow(rast) <- 20

# And then ... rasterize it! This creates a grid version 
# of your points using the cells of rast, values from the IP field:
rast2 <- rasterize(pts, rast, pts$IP, fun=mean) 

आप ग्रिड आकार और रिज़ॉल्यूशन को कई तरीकों से असाइन कर सकते हैं - रास्टर पैकेज डॉक्यूमेंटेशन पर अच्छी नज़र रखें।

रेखापुंज से रैस्टर कोशिकाओं के मूल्यों की गणना एक फ़ंक्शन के साथ की जा सकती है - उपरोक्त उदाहरण में 'माध्य'। सुनिश्चित करें कि आपने इसे इसमें डाल दिया है: अन्यथा यह आईपी के मूल्य का उपयोग करता है अंतिम बिंदु से यह भर में आता है!


CSV से:

pts <- read.csv("IP.csv")
coordinates(pts) <- ~lon+lat
rast <- raster(ncol = 10, nrow = 10)
extent(rast) <- extent(pts)
rasterize(pts, rast, pts$IP, fun = mean)

अरे यह बहुत उपयोगी है, लेकिन अगर मैं एक आकृति CS के बजाय lat / longs के साथ एक सरल CSV में अंक के साथ शुरू करता हूं तो कोड कैसे दिखेगा? CSV में कॉलम IP, Lat, Long, वगैरह-वगैरह होंगे, आदि
user1080253

आपने संकेत दिया था कि आपने पहले ही डेटा को SpatialPointsDataFrame में लोड कर दिया है ... जो कि ptsऊपर मेरे उदाहरण में है। बस अपने SpatialPointsDataFrame ऑब्जेक्ट पर कोड चलाएं!
सिंबांगु

4
यह उत्तर, हालांकि उत्कृष्ट है, पता नहीं लगता है कि क्या आवश्यक है। (इसके बजाय gis.stackexchange.com/questions/20018 के समाधान की पेशकश करना प्रतीत होता है ।) चुनौती 2000 या तो बिंदुओं को प्रक्षेपित करना है , न कि उनके मूल्यों को रेखापुंज कोशिकाओं को सौंपना। यह देखते हुए कि ओपी पहले से ही दावा करता है कि "एक क्रिगिंग एनालिसिस चलाएं," यह प्रश्न एक समान प्रक्रिया का उपयोग करने के लिए एक रैस्टर (मान) के मानों को निकालने के लिए नीचे आता है , जो कि बस एक अभिव्यक्ति की बात है । rhisthist(getValues(r))
whuber

@whuber - ऐसा लगता है कि ओपी पूछता है "मुझे परेशानी हो रही है कि उस डेटा को एक ग्रिड डेटाफ़्रेम में कैसे परिवर्तित किया जाए ताकि मैं हिस्टोग्राम विश्लेषण कर सकूं ... अंकों को ग्रिड में बदलने के लिए कोई सुझाव" वास्तविक प्रश्न के रूप में, और जानता है कि कैसे एक SpatialPointsDataFrame बनाने के लिए और सिंचाई चलाते हैं। लेकिन आप सही कह रहे हैं, यह 20018 (नकली इनपुट को छोड़कर) की नकल प्रतीत होता है।
सिमबामुंग

क्षमा याचना, @ user1080253 ... मैंने 'ग्रिड' को 'रेखापुंज' के रूप में पढ़ा जो सही नहीं है, और सिंचाई के लिए सहायक नहीं है; एक नियमित ग्रिड बनाने और अपने डेटा को उस ग्रिड पर इंटरपोल करने के लिए बेहतर विचार के लिए यहां देखें ।
सिंबांगु

3

प्लॉटकेएमएल पैकेज में एक फ़ंक्शन होता है जिसे कहा जाता है vect2rast। यह फ़ंक्शन मूल रूप rasterizeसे रास्टर पैकेज में उपलब्ध फ़ंक्शन का विस्तार करता है । का लाभ vect2rast; हालाँकि, यह है कि इसके लिए उपयोगकर्ता की ओर से किसी इनपुट की आवश्यकता नहीं होती है अर्थात यह स्वचालित रूप से ग्रिड सेल आकार और इनपुट डेटा सेट के गुणों के आधार पर बाउंडिंग बॉक्स को निर्धारित करता है। ग्रिड सेल का आकार मानचित्र में सुविधाओं के घनत्व / आकार ( nndistस्पैस्टेट पैकेज में कार्य) के आधार पर अनुमानित किया गया है ।

library(plotKML)
Rast2 <- vect2rast(pts)

# for large data sets use SAGA GIS:
Rast2 <- vect2rast(pts, method = "SAGA")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.