R ব্যবহার করে বহুভুজকে রাস্টার হিসাবে রূপান্তর করা


15

আমি একটি শেফফাইলটিকে আর এর মধ্যে একটি রাস্টার হিসাবে রুপান্তরিত করার চেষ্টা করছি My আমার পদ্ধতির রাস্টারটি নীচে পড়তে হবে:

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

রাস্টেরাইজ () ফাংশনটি প্রথমে আকারটি (বহুভুজ) পেতে চায় তারপরে ডিফল্টরূপে রাস্টার, সুতরাং আপনার প্রথম ত্রুটি। আপনি যে দ্বিতীয় কমান্ডটি দেখিয়েছেন Demo_ras = rasterize(demo, r, 'pop')তা হল চারপাশের সঠিক উপায়, তবে আপনি আবিষ্কার করেছেন যে এটির সাথে মিলের জন্য এক্সটেন্টস প্রয়োজন!

বহুভুজের একই বিস্তৃত অংশগুলি coverাকতে আপনি রাস্টারটির এক্সটেন্টস নির্ধারণ করতে পারেন:

extent(r) <- extent(demo)

... এটি আপনার দেওয়া উদাহরণটির জন্য কাজ করা উচিত, যতক্ষণ না 'পপ' 'ডেমো'র পরিবর্তকের সঠিক নাম। নিম্নলিখিতটি এখনই কাজ করেছে (আর 2.14 / ওএসএক্স), যেখানে আআআআআআআআআআ সীমানা.শ্প মধ্যে একটি আসল সংখ্যা কলাম:

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')

আপনার সম্পাদনা দেখে এবং আবার যাচাই করা হয়েছে - চূড়ান্ত ফরোয়ার্ড স্ল্যাশ স্পষ্টতই ওএসএক্সে alচ্ছিক, আমি কি এটি উইন্ডোজের সাথে নিই না? জানার যোগ্য!
সিম্বামাঙ্গু

হুঁ, আমি ওএসএক্স এবং উইন্ডোজ উভয় ক্ষেত্রেই স্ল্যাশ নিয়ে সমস্যা ছিল .. আমরা একই সংস্করণটি ব্যবহার করছি কিনা তা নিশ্চিত নয়।
djq

ওএসএক্স 10.7.2 / আর 2.14 খনিতে; অবশ্যই 'রাউন্ড উভয়ভাবে কাজ করে। আপনি কি ব্যবহার করছেন?
সিম্বামাঙ্গু

রূপান্তরটি স্বয়ংক্রিয় করতে, আমি এটি লিখেছিলাম: github.com/brry/misc/blob/master/shp2raster.R
বেরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.