कई SpatialPointsDataFrames को रेखापुंज में बदलें


9

मेरे कार्यक्षेत्र में 100 SpatialPointsDataFrames हैं। मैंने उन्हें इस तरह से लोड किया:

filenames <- list.files(path="",
                        pattern="XYhectareTravelTimes_ez+.*shp")

for(i in filenames){
              filepath <- file.path("/",i)
              assign(i, readShapePoints(filepath))

उन्हें इस तरह कहा जाता है:

XYhectareTravelTimes_ez10.*shp 
XYhectareTravelTimes_ez11.*shp 
XYhectareTravelTimes_ez12.*shp 

आदि।

कार्यक्षेत्र के माध्यम से मैं उन्हें आपदाओं में परिवर्तित कैसे कर सकता हूं?

मैं बहुत नया आर उपयोगकर्ता हूं और कुछ मदद पाने की उम्मीद कर रहा हूं। बहुत बहुत धन्यवाद।


1
यह निर्दिष्ट करने के लिए अपनी पोस्ट संपादित करें कि क्या आपके अंक एक नियमित ग्रिड पर हैं या यदि आपको प्रक्षेप की आवश्यकता है
Etienne Racine

जवाबों:


9

यदि आपके डेटा में xyz डेटा (जहाँ z रास्टर मान है) और आपके अंक एक नियमित ग्रिड (इंटरपोल की कोई आवश्यकता नहीं) हैं।

library("raster")
r <- rasterFromXYZ(as.data.frame(travel)[, c("x", "y", "z")])

यदि आपको प्रक्षेप की आवश्यकता है, तो आप अकीमा पुस्तकालय का उपयोग कर सकते हैं:

library("raster")
library("akima")

steps <- 100
isu <- with(travel@data, interp(x, y, z, 
    xo=seq(min(x), max(x), length = steps),
    yo=seq(min(y), max(y), length = steps)
))

r <- raster(isu)

अब, यह क्रमिक रूप से करने के लिए आपको बस इसे एक forलूप में लपेटने की आवश्यकता है (मैंने आपके प्रश्न में दी गई जानकारी से जितना संभव हो उतना दूर रहने की कोशिश की है):

library("raster")

filenames <- list.files(path="", pattern="XYhectareTravelTimes_ez+.*shp")

# create a container for all the rasters
raster_cat <- list()

for (i in filenames) { 
  travel <- readShapePoints(i)
  r <- rasterFromXYZ(as.data.frame(travel)[, c("x", "y", "z")])
  raster_cat[[i]] <- r
}

मैं उपयोग करने travel@data(या @बिल्कुल उपयोग करने) के खिलाफ सलाह दूंगा , क्योंकि यह आंतरिक नामों पर निर्भर करता है SpatialPointsDataFrame, जो बदल सकता है। मैं उपयोग करने का सुझाव देता हूं as.data.frame, जो इन आंतरिक नामों पर निर्भर नहीं करता है।
पॉल हीमस्ट्रा

अच्छी बात। मैंने इसे बदल दिया है। मुझे स्लॉट उपयोग पसंद है क्योंकि यह अधिक कॉम्पैक्ट है, लेकिन आप सही हैं।
एटिएन रेसीन

5

@ एटीनब्रिज के उत्तर के अलावा, मैं एक आवेदन शैली लूप के लिए जाऊंगा (जो कि अधिक आर-ईश है, और एक ही चीज़ के लिए कम कोड का उपयोग करता है):

library("raster")

filenames <- list.files(path="", pattern="XYhectareTravelTimes_ez+.*shp")

raster_cat = lapply(filenames, function(x) {
  travel <- as.data.frame(readShapePoints(x))
  r <- rasterFromXYZ(travel[, c("x", "y", "z")])
})

होई पॉल, उत्तर के लिए बहुत बहुत धन्यवाद !! आपका तरीका जितना आसान है, उससे कहीं ज्यादा आसान है। यदि आप मेरी मेथोड में रुचि रखते हैं तो मुझे बताएं। सबसे अच्छा संबंध है, लिविया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.