আর ব্যবহার করে শেফফাইল দ্বারা সংজ্ঞায়িত কোনও অঞ্চলের গড় রাস্টার মূল্য কীভাবে পাওয়া যায়?


19

আমার কাছে রাস্টার ইমেজের একটি সেট রয়েছে যা বছরের পর বছর ধরে একটি নির্দিষ্ট মাসকে উপস্থাপন করে এবং আমি একটি শেফফাইল ব্যবহার করে কোনও অঞ্চলের গড় মানগুলির একটি টাইমলাইন তৈরি করতে চাই।

আমি কীভাবে রেস্টারদের কাছ থেকে মানগুলি বের করব এবং সেগুলিতে এমনভাবে আমদানি করব যাতে আমি সেগুলি ব্যবহার করতে পারি?

উত্তর:


23

এখানে উদাহরণ কোড। আপনার কোডের সমস্ত রাস্টার প্রসেসিংয়ের জন্য একটি লুপে এই কোডটি মানিয়ে নেওয়ার পক্ষে মোটামুটি সোজা এগিয়ে। যদি আপনার রাস্টাররা একটি সাধারণ পরিমাণ এবং রেজোলিউশন ভাগ করে নেয় তবে আপনি স্ট্যাকের ব্যান্ডগুলির মাধ্যমে একটি রাস্টার স্ট্যাক তৈরি করতে এবং লুপ তৈরি করতে পারেন। একটি ডিরেক্টরিতে সমস্ত রাস্টার সমন্বিত একটি ভেক্টর তৈরি করতে, একটি নির্দিষ্ট বিন্যাসে, আপনি "list.files" ব্যবহার করতে পারেন এবং তারপরে এই ভেক্টরটিকে স্ট্যাক করতে পারেন।

উদাহরণ:

rlist=list.files(getwd(), pattern="img$", full.names=TRUE) 

r <- stack(rlist)   


    # Add required libraries
    require(raster)
    require(sp)
    require(rgdal)

    # Set working directory, raster, in and out shapefiles
    setwd("C:/test")
    inshp="MyPolys"
    outshp="PolyMeans"
    rdata <- "Year2012.img"

    # Read polygon feature class shapefile
    sdata <- readOGR(dsn=getwd(), layer=inshp)

    # Read raster
    r <- raster(rdata)

    # Extract raster values to list object
    r.vals <- extract(r, sdata)

    # Use list apply to calculate mean for each polygon
    r.mean <- lapply(r.vals, FUN=mean)

    # Join mean values to polygon data
    sdata@data <- data.frame(sdata@data, m2012=r.mean)

    # Write results
    writeOGR(sdata, getwd(), outshp, driver="ESRI Shapefile", check_exists=TRUE, 
         overwrite_layer=TRUE)

1
+1 - দুর্দান্ত সমাধান, ভালভাবে সাজানো এবং সম্পূর্ণ উত্তর।
সিম্বামাঙ্গু

যদি আমার একটি মাল্টিপলিজোনফাইল থাকে: কীভাবে data.frame(sdata@data, m2012=r.mean)কোন্ মানটি নির্ধারণ করতে হ্যাচ বহুভুজটি জানবে?
স্টোফফেস

r.mean sdata এ সঠিকভাবে যুক্ত করার জন্য আমাকে প্রথমে তালিকাভুক্ত করতে হয়েছিল r.mean: r.mean <- তালিকাভুক্ত (lapply (r.vals, FUN = mean))
cmbarbu

6

একটি SpatialPolygonsDataFrame( readOGRপ্যাকেজ থেকে ফাংশন rgdal) এ শেফফাইল পড়ুন

কোনও Rasterবস্তুতে রাস্টার পড়ুন ( rasterপ্যাকেজ থেকে ফাংশন raster)

extract(raster, spdf)প্রতিটি বহুভুজের অধীনে গ্রিড ঘরগুলি পেতে ব্যবহার করুন । তারপরে meanতাদের উপর দৌড়াও ।

আপনার রাস্টার চিত্রগুলির সেটটির উপরে পুনরাবৃত্তি করুন ...


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