आर का उपयोग करके एक बहुभुज को एक रेखापुंज में परिवर्तित करना


15

मैं आर के भीतर एक आकृति को एक रेखापुंज में बदलने की कोशिश कर रहा हूं। मेरा दृष्टिकोण निम्नानुसार रेखापुंज में पढ़ना है:

library(rgdal) # Loads SP package by default
demo <- readOGR('F:/data/', 'shapefile') # Creates a SpatialPolygonsDataFrame class (sp)

यह ठीक काम करता है, और मैं इसे साजिश कर सकता हूं। हालाँकि यह एक बड़ी आकृति है और मैं इसे एक रेखापुंज में बदलना चाहता हूं। मैंने निम्नलिखित कोशिश की है:

r <- raster(ncol=180, nrow=180)
Demo_ras = rasterize(r, demo, 'pop')  # pop is an integer here

त्रुटि संदेश:

Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "rasterize", for signature "RasterLayer", "SpatialPolygonsDataFrame"

मैं थोड़ा उलझन में हूँ जो तर्कों का सही क्रम है। मैंने भी यह कोशिश की है:

Demo_ras = rasterize(demo, r, 'pop')

जिसके परिणामस्वरूप त्रुटि हुई:

Error in .polygonsToRaster(x, y, ...) : 
  polygon and raster have no overlapping areas

हालांकि यह समझ में आता है कि जिस क्षेत्र को कवर नहीं किया जाता है SpatialPolygonsDataFrame, उसके लिए एक रेखापुंज उत्पन्न नहीं किया जा सकता है , मुझे यकीन नहीं है कि मुझे क्या जानकारी निर्दिष्ट करने की आवश्यकता है ताकि रेखापुंज में SpatialPolygonsDataFrameक्षेत्र शामिल हो ।

जवाबों:


23

Rasterize () फ़ंक्शन पहले आकार (बहुभुज) को फिर डिफ़ॉल्ट रूप से रेखापुंज करना चाहता है, इसलिए आपकी पहली त्रुटि है। आपके द्वारा दिखाया गया दूसरा कमांड Demo_ras = rasterize(demo, r, 'pop')सही तरीका है, लेकिन जब आपको पता चला कि इसे मिलान करने के लिए extents की आवश्यकता है!

आप बहुभुज के समान विस्तार को कवर करने के लिए रेखापुंज के विस्तार को निर्दिष्ट कर सकते हैं:

extent(r) <- extent(demo)

... यह आपके द्वारा प्रदान किए गए उदाहरण के लिए काम करना चाहिए, जब तक कि 'पॉप' 'डेमो' में एक चर का सही नाम है। निम्नलिखित ने अभी काम किया (R 2.14 / OSX), जहाँ AREA सीमा में एक वास्तविक संख्या स्तंभ है।

poly <- readOGR("/workingdirectory", "boundary") # does not work  with final slash '/' 
r <- raster(ncol=180, nrow=180)
extent(r) <- extent(poly)
rp <- rasterize(poly, r, 'AREA')

अपने संपादन को देखा और फिर से जाँच की - अंतिम फॉरवर्ड स्लैश OSX पर स्पष्ट रूप से वैकल्पिक है, मैं इसे विंडोज के साथ नहीं लेता हूं? जानने लायक!
सिंबांगु

हम्म, मुझे OSX और विंडोज दोनों पर स्लैश के साथ एक समस्या थी .. यकीन नहीं कि हम एक ही संस्करण का उपयोग कर रहे हैं या नहीं।
djq

OSX 10.7.2 / R 2.14 खदान पर; निश्चित रूप से दोनों तरह से काम करता है। तुम क्या प्रयोग कर रहे हो?
Simbamangu

रूपांतरण को स्वचालित करने के लिए, मैंने इसे लिखा: github.com/brry/misc/blob/master/shp2raster.R
बेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.