R में SpatialPolygons को कैसे व्यवस्थित करें?


10

मैं {sp} पैकेज में 'rasterize' फ़ंक्शन का उपयोग करके विश्व बाथमीट्री रास्टर लेयर से अपने हित के क्षेत्र के बेथमीट्री मूल्यों को निकालने की कोशिश कर रहा हूं।

* संपादन: मुझे 'एक्स्ट्रेक्ट' फंक्शन मिला, जो मुझे वही लग रहा है जो मुझे ज्यादा लग रहा है।

यह वही है जो मैंने अब तक किया है:

> class(subarea0) #This is my area of interest (Eastern Canadian Arctic Sea)
[1] "SpatialPolygons"
attr(,"package")
[1] "sp"

> extent(subarea0)
class       : Extent 
xmin        : -82.21997 
xmax        : -57.21667 
ymin        : 60.2 
ymax        : 78.16666

library(marelac)
data("Bathymetry")#World bathymetric data in library (marelac)
names(Bathymetry);class(Bathymetry);str(Bathymetry)
[1] "x" "y" "z"
[1] "list"
List of 3
 $ x: num [1:359] -180 -179 -178 -177 -176 ...
 $ y: num [1:180] -89.5 -88.5 -87.5 -86.5 -85.5 ...
 $ z: num [1:359, 1:180] 2853 2873 2873 2873 2873 ...

  raster_bath<-raster(Bathymetry)#Transformed into a raster layer
    extent(raster_bath) <- extent(subarea0)#Transform the extend of my raster to the extend of my SpatialPolygons

>ras_sub0<-rasterize(subarea0,raster_bath)#rasterize my SpatialPolygons (*Edits: not the function that I need here, but I am still interested to learn what results mean)
Found 2 region(s) and 10 polygon(s)
> plot(ras_sub0)
> plot(subarea0, add=TRUE)

यहां छवि विवरण दर्ज करें

> ras_sub0
class       : RasterLayer 
dimensions  : 180, 359, 64620  (nrow, ncol, ncell)
resolution  : 0.06964709, 0.0998148  (x, y)
extent      : -82.21997, -57.21667, 60.2, 78.16666  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 
values      : in memory
min value   : 1 
max value   : 2 
layer name  : layer 

मुझे इसका परिणाम समझ में नहीं आया। मुझे अपने प्रत्येक बहुभुज के लिए 2 रंग क्यों मिल रहे हैं? उनका क्या मतलब है?

मैं अंत में बाथमीट्री गहराई समोच्च कैसे प्राप्त कर सकता हूं? क्या यह मेरे संकल्प के साथ कुछ करना है या आयामों को बदलना है?

* संपादन: ठीक है, मैंने अब निम्नलिखित किया है:

v <- extract(raster_bath, subarea0)#Extract data from my Raster Layer for the locations of my SpatialPolygons

v एक सूची है और मुझे यकीन नहीं है कि कैसे / किस रूप में मेरे स्थानिक बहुभुज के साथ इस जानकारी को रिबंड करने के लिए ...

धन्यवाद!


जब आप कहते हैं कि 'बेथिमेट्री डेप्थ कॉन्टूर' प्राप्त करें तो क्या आपका मतलब है कि आप भी कॉन्ट्रोवर्सीज उत्पन्न करना चाहते हैं?
सिंबांगु

जवाबों:


6

आपकी लाइन ras_sub0<-rasterize(subarea0,raster_bath)सिर्फ पॉलीगनों की अनुक्रमणिका संख्या ले रही है और यह बताती है कि रेखापुंज के मानों को।

यदि आप अपने बहुभुज और रेखापुंज का सिर्फ चौराहा चाहते हैं:

subarea0_bathy <- intersect(raster_bath, subarea0)

अपडेट : जैसा कि @GodinA नोट, प्रतिच्छेद () की तरह लगता है कभी-कभी एक रेखापुंज नहीं करता है जिसमें बहुभुज की पूरी सीमा होती है! इसके आस-पास जाने के लिए, आप अपने मूल से थोड़े बड़े रेखापुंज को काट सकते हैं:

r2 <- raster() # create a generic raster
extent(r2) <- extent(subarea0) + 1 # add 1 degree of extent (0.5 each side)
r3 <- intersect(raster_bath, r2) 

शुक्रिया @Simbamangu, मैंने "इंटरसेक्ट" कमांड की कोशिश की, हालांकि जब मैं subarea0_bathy और मेरे spatialpolygon (subarea0) की साजिश करता हूं, तो वे पूरी तरह से ओवरलैप नहीं करते हैं, क्यों? आपके पिछले प्रश्न का उत्तर देने के लिए, हां मैं अंत में अपना स्नानागार समोच्च भी करूंगा। कोई सुझाव?
गोडिन्या

हां, बाथिमेट्री डेटा और तंजानिया बहुभुज से आउटपुट को देखा और मुझे वही प्रभाव दिखाई दे रहा है। ऊपर मेरा अपडेट देखें। आकृति के लिए, यह आसान के रूप में के रूप में cont <- contour(r3)तो lines(cont)महान R नहीं है?
सिंबांगु

शानदार, हां आर शानदार हो सकता है! धन्यवाद @ सिंबांगु, यह काम करता है! हालाँकि, मैं केवल अपने स्पैटियलपॉलीगॉन को अपने गहराई समोच्च के साथ प्लॉट करना चाहूंगा। शायद एक SpatialPolygonsDataframe बनाने के लिए? प्रतिच्छेदन का उपयोग करते हुए, मुझे अपने Spatialpolygons को शामिल करने वाले पूरे वर्ग के लिए जानकारी मिलती है। मुझे अपनी गहराई समोच्च के साथ किसी भी तरह अपने स्पैटियलपोलीगॉन को संयोजित करने की आवश्यकता है, लेकिन यह सुनिश्चित नहीं है कि ऐसा कैसे करें। यही कारण है कि मुझे लगा कि फ़ंक्शन 'अर्क' एक अच्छी शुरुआत थी, लेकिन मैं गहराई की एक सूची के साथ समाप्त होता हूं कि मुझे यकीन नहीं है कि मैं अपने स्थानिक पॉलीगॉन के साथ कैसे विद्रोह कर सकता हूं ... कोई विचार? एक बार फिर धन्यवाद!
गोडिन्या

क्या आप के साथ खत्म करना चाहते हैं? Contours (SpatialLines) जो आपके subarea0 के साथ ओवरलैप करता है? आप एक नया प्रश्न शुरू करना चाह सकते हैं क्योंकि यह अब मूल से परे जा रहा है।
सिंबांगु

हां, मैं केवल इस परिभाषित क्षेत्र के लिए गहराई समोच्च के साथ अपना सबअरेरा प्राप्त करना चाहता हूं: gis.stackexchange.com/questions/25112/…
GodinA

1

यहाँ एक बुनियादी समाधान का उपयोग करके एक और समाधान दिया गया है raster

# create a raster with the dimensions that you are interested in.
r <- raster(extent(subarea0)+1) # +1 to increase the area
res(r) <- 0.1 # you can change the resolution here. 0.1 can be about 10x10 km if you are close to the equator.
crs(r) <- projection(subarea0) # transfer the coordinate system to the raster

# Now you can add data to the cells in your raster to mark the ones that fall within your polygon.
r[subarea0,] <- 1 # this an easy way to subset a raster using a SpatialPolygons object

# check your raster
plot(r)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.