এখানে আরে উপায় আছে:
একটি পরীক্ষার রাস্টার, 20x30 সেল তৈরি করুন, 1/10 তে সেট করা ঘরগুলির 1/10 তৈরি করুন:
> require(raster)
> m = raster(nrow=20, ncol=30)
> m[] = as.numeric(runif(20*30)>.9)
> plot(m)
কোনও ফাইলে বিদ্যমান রাস্টারের জন্য উদাহরণস্বরূপ একটি জিওটিআইএফএফ, আপনি কেবল এটি করতে পারেন:
> m = raster("mydata.tif")
এখন 1 টি ঘরের xy স্থানাঙ্কের একটি ম্যাট্রিক্স পান, এই পয়েন্টগুলি প্লট করুন এবং আমরা দেখতে পাই যে আমাদের সেল কেন্দ্র রয়েছে:
> ones = xyFromCell(m,1:prod(dim(m)))[getValues(m)==1,]
> head(ones)
x y
[1,] -42 85.5
[2,] 102 85.5
[3,] 162 85.5
[4,] 42 76.5
[5,] -54 67.5
[6,] 30 67.5
> points(ones[,1],ones[,2])
পদক্ষেপ 1. 1000 (xo, yo) জোড়া তৈরি করুন যা একটি বাক্সে 0 টি কেন্দ্র করে একটি একক ঘরের আকার তৈরি করে। res
কক্ষের আকার পেতে ব্যবহারের নোট :
> pts = data.frame(xo=runif(1000,-.5,.5)*res(m)[1], yo=runif(1000,-.5,.5)*res(m)[2])
পদক্ষেপ 2. উপরের পয়েন্টগুলির মধ্যে প্রতিটি কোষটি এলোমেলোভাবে 1 টি থেকে 1 টি কোষের সংখ্যায় 1000 মানকে নমুনা দিয়ে চলেছে:
> pts$cell = sample(nrow(ones), 1000, replace=TRUE)
অফসেটে সেল সেন্টারটি যোগ করে শেষ পর্যন্ত স্থানাঙ্কটি গণনা করুন। চেক করার প্লট:
> pts$x = ones[pts$cell,1]+pts$xo
> pts$y = ones[pts$cell,2]+pts$yo
> plot(m)
> points(pts$x, pts$y)
এখানে 10,000 পয়েন্ট রয়েছে (10000 দিয়ে উপরে 1000 প্রতিস্থাপন করুন), এর সাথে প্লট করা হয়েছে pch="."
:
অর্ধেকটি পয়েন্ট হিসাবে 200x300 রাস্টারটিতে 10,000 পয়েন্টের জন্য খুব তাত্ক্ষণিক । রাস্টারে কয়জন রয়েছে তার সাথে সামঞ্জস্য রেখে সময় বাড়বে, আমার ধারণা।
শেফফাইল হিসাবে সংরক্ষণ করতে, কোনও SpatialPoints
বস্তুতে রূপান্তর করুন , এটিকে সঠিক সমন্বয় ব্যবস্থা রেফারেন্স দিন (আপনার রাস্টার হিসাবে একই) এবং সংরক্ষণ করুন:
> coordinates(pts)=~x+y
> proj4string(pts)=CRS("+init=epsg:4326") # WGS84 lat-long here
> shapefile(pts,"/tmp/pts.shp")
এটি এমন একটি শেফফাইল তৈরি করবে যাতে সেল নম্বর এবং বৈশিষ্ট্য হিসাবে অফসেট অন্তর্ভুক্ত থাকে।