বেশ কয়েকটি স্পেসিয়ালপয়েন্টস ডেটা ফ্রেমগুলি রাস্টারগুলিতে রূপান্তর করুন


9

আমার ওয়ার্কস্পেসে 100 টি স্পটিয়ালপয়েন্টস ডেটা ফ্রেম রয়েছে। আমি এগুলি এগুলি লোড করেছি:

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
আপনার পয়েন্টগুলি নিয়মিত গ্রিডে রয়েছে কিনা বা আপনার যদি অন্তরবৃত্তির প্রয়োজন রয়েছে তা নির্দিষ্ট করতে আপনার পোস্টটি সম্পাদনা করুন
ইটিয়েন র্যাসিন

উত্তর:


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")])
})

হোই পল, উত্তরের জন্য আপনাকে অনেক ধন্যবাদ !! আপনার পদ্ধতিটি আমি যেটা আবিষ্কার করেছি তার থেকে অনেক সহজ। আপনি যদি আমার মেথোডে আগ্রহী হন তবে আমাকে জানান। শুভেচ্ছা, লিভিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.