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


13

আমার প্রশ্নটি পয়েন্টগুলির স্থানে রাস্টারদের কাছ থেকে মান আহরণ সম্পর্কে। ফাংশন এক্সট্রাক্ট সহ এটি খুব সহজ, এবং ফাংশনটি আমাকে পয়েন্টগুলির মধ্যে সমস্ত ভেরিয়েবলের মান সহ একটি ডেটাফ্রেম দেয়। আমি সেই ডাটাফ্রেমে প্রতিটি পয়েন্টের স্থানাঙ্ক রাখতে চাই। আমি কীভাবে এটি ঘটতে পারি? R- কে কী বলা সম্ভব যে রাস্টার থেকে মানগুলি বের করার সময় লোকেশন পয়েন্টের কলামগুলিও যুক্ত করা হয়।

এটি আমার পদ্ধতি:

presencias=read.table("c:/SDM_R/presencias/P_lentiscus_pres.csv",header=TRUE,sep=";")

lista_variables <-list.files(path="Variables_modelizacion/solo_ascii",pattern='*.asc',full.names=TRUE)
variables <- stack(lista_variables)

variables_presencia<-extract(variables, presencias)

ফলাফলগুলি এরকম কিছু:

> bio1  bio12  bio18  bio2  bio4 
> 90    875    165    95    4886
> 115   1085   158    83    4075
> 135   1153   153    67    3402
> 85    1026   137    99    5203
> 96    667    128    108   5823
> 98    531    109    113   6305
> 132   450    63     123   6598
> 132   569    104    106   5963
> 95    814    196    98    5571
> 146   474    39     114   6603

তবে আমি স্থানাঙ্কের ডেটা সহ আরও দুটি কলাম চাইছি (তবে আমার সিএসভি থেকে লোকেশন টেবিলটি বের করে অন্যের কলাম হতে পারে)।

অনেক ধন্যবাদ.


দুঃখিত, ফলাফলের ফর্ম্যাটটি আগে প্রদর্শিত হয়েছিল সঠিক নয়।
জেএমকোস্টা

পাঁচটি কলাম হতে হবে (বায়ো 1, বায়ো 12 .... বায়ো 4)
জেএমকোস্টা

মানগুলি কি আপনার স্থানাঙ্কের সাথে মিলে যায় না presencias?
রোমান Luštrik

ভেরিয়েবলের মানগুলি উপস্থিতি বিন্দু থেকে। তবে আমি টেবিলের পয়েন্টগুলির স্থানাঙ্কগুলিও চাই। তবে আমি কী করব তা বুঝতে পারি না।
জেএমকোস্টা

লাইন বরাবর কিছু সম্পর্কে কি cbind(coordinates(presencias), variables_presencia)? এরপরে আপনি এসপিডিএফ ব্যবহার করে রূপান্তর coordinates(result) <- ~ X + Yকরতে পারেন এবং আপনি আবার স্থানিক বস্তুর জন্য নকশাকৃত পদ্ধতির আধিক্য ব্যবহার করতে পারেন।
রোমান Luštrik

উত্তর:


20

ধরে নিই presenciasএবং variablesএকই প্রক্ষেপণটি ভাগ করে নেওয়া, এটি একটি সহজ কাজ হওয়া উচিত। আমি আপনাকে স্প্যাটালপয়েন্টস ডেটা ফ্রেম অবজেক্টে ডেটাফ্রেম read.table()রূপান্তর করতে আপনার বক্তব্যের পরে কোডের এই লাইনগুলি যুক্ত করার পরামর্শ দিচ্ছি presencias(এক্স এবং y স্থানাঙ্কযুক্ত কলামগুলির নামগুলি তারা আমার উদাহরণ থেকে পৃথক হলে কেবল পরিমার্জন করুন)।

coordinates(presencias) <- c("x", "y")

পুনরুত্পাদনযোগ্য উদাহরণ দেওয়ার জন্য, আমি আমার উত্তরের সুযোগটি আরও কিছুটা খোলার চেষ্টা করি। সবার আগে, জার্মানিতে কম বা কম গুরুত্বপূর্ণ অবস্থানের সাথে এই ইএসআরআই শেফফাইলটি ডাউনলোড এবং আনজিপ করুন । এগুলি পরে পয়েন্ট ডেটা হিসাবে পরিবেশন করবে। এছাড়াও আপনি প্যাকেজ প্রয়োজন হবে dismo, rgdalএবং rasterএই সংক্ষিপ্ত উদাহরণস্বরূপ, তাই নিশ্চিত যে এই লাইব্রেরি (এবং তাদের সব নির্ভরতা) আপনার স্থানীয় হার্ড ড্রাইভে ইনস্টল করা আছে।

আসুন প্রয়োজনীয় প্যাকেজগুলি লোড করে শুরু করি।

library(dismo)
library(rgdal)
library(raster)

এর পরে, আপনার একটি নমুনা রাস্টারলেয়ার তৈরি করা উচিত। আমাদের ক্ষেত্রে, জার্মানির কোনও শারীরিক মানচিত্র পাওয়ার জন্য আমরা প্যাকেজটি gmap()থেকে ফাংশনটি ব্যবহার করব dismo

germany.mrc <- gmap("Germany")

আপনি এখন readOGRআর এর rgdalপ্যাকেজ থেকে আপনার পয়েন্ট শেফফিল আমদানি করতে পারেন । ডেটা উত্সের নাম (ডিএসএন = ...) সমন্বয় করতে ভুলবেন না। পুরো প্রজেকশন স্টাফ আপনার বিশেষ ক্ষেত্রে অপ্রচলিত। তবে জার্মানি রাস্টারলায়ারের সাথে আমাদের পয়েন্ট ডেটা সফলভাবে ওভারলে করার জন্য এটি আমাদের উদাহরণে করা দরকার।

# Import SpatialPointsDataFrame
germany.places <- readOGR(dsn = "/path/to/shapefile", layer = "places")
# Define shapefile's current CRS
projection(germany.places) <- CRS("+proj=lonlat +ellps=WGS84")
# Reproject to RasterLayer's CRS
germany.places.mrc <- spTransform(germany.places, CRS(projection(germany.mrc)))

আমাদের পয়েন্ট ডেটার বিশাল আকার হ্রাস করতে, আমরা জার্মানিতে দশটি অবস্থানের এলোমেলো নমুনা আঁকব। এটি আমাদের উদ্দেশ্যগুলির জন্য পর্যাপ্ত হওয়া উচিত।

set.seed(35)
germany.places.mrc.sample <- germany.places.mrc[sample(nrow(germany.places.mrc), 10), ]

এখন যে প্রস্তুতির কাজ শেষ হয়েছে, আমরা কেবলমাত্র সেই নির্দিষ্ট পিক্সেলের মানগুলি বের করতে শুরু করতে পারি যে আমাদের দশটি এলোমেলোভাবে নমুনাযুক্ত পয়েন্টের মধ্যে রয়েছে।

data <- data.frame(coordinates(germany.places.mrc.sample),
                   germany.places.mrc.sample$name, 
                   extract(germany.mrc, germany.places.mrc.sample))
names(data) <- c("x", "y", "name", "value")

নিষ্কাশিত পিক্সেল মানগুলির সাথে পয়েন্ট স্থানাঙ্কগুলিকে মার্জ করার জন্য, আমাদের কেবল আমাদের স্পেসিয়ালপয়েন্টস ডেটা ফ্রেমের স্থানাঙ্কগুলি সহ একটি ডেটাফ্রেম সেট আপ করতে হবে। এটাই!

data
           x       y          name value
1  1073490.3 6513446 Veitsteinbach   208
2  1269100.8 6156690   Assenhausen   231
3  1336757.5 6246284    Frauenwahl   195
4   828579.9 6634122      Altenhof   189
5  1571418.1 6662558         Wohla   151
6  1192299.4 6864087     Flechtorf   170
7   976270.0 6362050    Hilsenhain   208
8  1117416.4 6092146      Nestbaum   175
9  1274192.0 6344490 Wappeltshofen   236
10  878488.2 6839843        Leeden   208

1

অবশ্যই আপনি ঠিক করতে পারেন:

variables_presencia$x <- presencias['x']

variables_presencia$y <- presencias['y']

(আপনার স্থানাঙ্কের ডেটা দুটি x কলামে 'x' এবং 'y' বলে মনে হচ্ছে)


আমি সেভাবে ভেবেছিলাম, তবে আমার এই সন্দেহ ছিল: এক্সট্রাক্টের ফলে প্রাপ্ত ডেটাফ্রেমের একই উপস্থিতি রয়েছে। (ডেটাফ্রেমের প্রথম সারিটি উপস্থিতি টেবিলের প্রথম সারি)
জেএমকোস্টা

এবং আরেকটি বিষয়, যদি কোনও পয়েন্টের (3 বা 4) কোনও পরিবর্তনশীল ডেটা না থাকে তবে সারিটির সংখ্যা একই হবে না এবং নিশ্চিতভাবে অর্ডারও একই হবে না।
জেএমকোস্টা

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