ওপেনসোর্স জিআইএস সলিউশনে একটি বহুভুজ ওভারলে থেকে রাস্টার মানগুলি পান


16

আমার দুটি স্তর আছে। বহু টাইলস সহ একটি বহুভুজ-আকৃতির স্তর এবং একটি কলারম্যাপে অনেক বিভাগ সহ CORINE 2006 ল্যান্ড কভার সমেত একটি রাস্টার-স্তর রয়েছে। আমি শেপলেয়ারে প্রতিটি বহুভুজের জন্য রাস্টার-স্তরের প্রতিটি ভূমি কভার বিভাগের যোগফল পেতে চাই।

উদাহরণস্বরূপ '2' আইডি সহ একটি বহুভুজ রয়েছে এবং আমি এই বহুভুজের জন্য (শতাংশ বা বর্গমিটারে) এর মতো বৈশিষ্ট্যগুলি চাই:

  • আবাদযোগ্য জমি: 15%
  • বন: 11%
  • স্ট্রিটস: 2% (... এবং এক)

আমি এটি ঘাস, কিউজিস (কোনও ফাংশন নয়), সাগা (মোট মান অনুসারে প্রতিটি পরিমাণ যোগ করে) r (মোট যোগফল) করার চেষ্টা করেছি, তবে আমি এখনও কোনও সমাধান পাইনি। বেশিরভাগ প্লাগইন (কিউজিসে জোনাল পরিসংখ্যান) কেবল 0-1 রাস্টার স্তরগুলিকে সমর্থন করে। v.rast.stats কোনভাবেই সাহায্য করেনি। আইএম যে কোনও ভাল এবং স্মার্ট সমাধানের জন্য উন্মুক্ত !. হতে পারে আমি এমনকি একটি ভুল পদ্ধতির ব্যবহার করেছি বা ভুল করেছি।

আর্কগিসে এই কাজটি বেশ সহজ, যদি আমি সঠিক মনে রাখি তবে আমি আপনার দৈনন্দিন লিনাক্স ব্যবহারকারীর জন্য এখনও একটি ভাল সমাধান অনুপস্থিত।

আমি একটি ডেবিয়ান লিনাক্স সিস্টেম চালাচ্ছি এবং এই কারণেই আমি কেবল এই OS এর জন্য প্রোগ্রামগুলি ব্যবহার করতে পারি।


সম্পাদনা: কারণ এই প্রশ্নটিতে এখনও অনেকগুলি মতামত এবং দর্শক রয়েছে: আমি একটি কিউজিআইএস-প্লাগইন লিখেছিলাম, যা রাস্টার স্তরটির ল্যান্ডকভার গণনা করতেও সক্ষম। আমি এখনও একটি বহুভুজ ওভারলে কোড করে নেই, তবে এটি অবশ্যই প্ল্যানড। এখানে প্লাগইনটি সন্ধান করুন এবং স্কিপি লাইব্রেরিটি প্রথমে ইনস্টল করুন।


এটি অবশ্যই আর-তে করা যেতে পারে, এটি কোন কার্যকারিতা নিয়ে কাজ করার কেবল একটি প্রশ্ন। আপনাকে রাস্টার দিয়ে প্রতিটি বহুভুজকে আচ্ছাদন করতে হবে এবং তারপরে "কুকি-কাট" পিক্সেলের সংক্ষিপ্তসার পেতে সারণী () ব্যবহার করুন। প্যাকেজ রাস্টার, rgdal এবং rgeos দরকারী হতে পারে। "আর স্পেশিয়াল টাস্ক ভিউ" পড়ুন (গুগল এটি সন্ধান করবে)
স্পেসডম্যান

অবশ্যই, তবে আমি কীভাবে এই জাতীয় সংক্ষিপ্তসার পেতে পারি। আপনি সহজেই! Is.na (ওভারলে (পলি, রাস্টার) এর সাথে একটি রাস্টার স্তর সহ বহুভুজ স্তরটি ওভারলে করতে পারেন তবে এক্সট্র্যাক্টের মতো কমান্ডের সাহায্যে আমি কেবল কুকি-কাট পিক্সেলের মোট ক্ষেত্রটি গণনা করতে পারি এবং কলর্যাপের বিভিন্ন বিভাগ নয় not । আমি rgeos জানতাম না, তবে আমি এপিআইয়ের মাধ্যমে দেখেছিলাম এবং এটি করার জন্য কোনও কার্যকারিতা পাইনি।
কার্লিউ


ওহে! একটি QGIS প্লাগইন তৈরি করার জন্য ধন্যবাদ! আমি কেবল উল্লেখ করতে চেয়েছিলাম, প্লাগইন ক্র্যাশ করে (> 13000 বহুভুজ)। এটি ক্রশ না হওয়ার মতো কাজটি ভাগ করে দিলে দুর্দান্ত হবে। এবং একসাথে সমস্ত ক্লাস যুক্ত করার বিকল্প থাকা খুব দুর্দান্ত হবে (উদাহরণস্বরূপ এ্যাট্রিবিউট টেবিলটি 2 নতুন ক্ষেত্র ল্যান্ডকভারআইডি এবং ল্যান্ডকভার% পেয়েছে যেখানে উভয়ই মান সহ একটি সিএসভি-তালিকা রাখে) :)
এমফবারের

@ জোরান: আপনি যদি মনে করেন এটি একটি ত্রুটি, মন্তব্যটিতে এটি লেখার চেয়ে একটি বাগ রিপোর্ট উত্থাপন করুন ( github.com/Martin- জং / লেকোস / প্রচ্ছদ )। আরও 1) আপনার কাজগুলি ক্রিয়াকলাপ করা বা ব্যাচ প্রক্রিয়া করা প্লাগইন কাজ নয় ins এটি তখন ছোট সাবসেটে চালান Run 2) অবশ্যই। যুক্ত করার জন্য অনেক দুর্দান্ত জিনিস থাকবে things কোডটি ওপেন সোর্স, কোডটি নির্দ্বিধায় মনে করুন :)
কার্লিউ

উত্তর:


13

স্পেসিয়ালপলিগনস ডেটা ফ্রেম (যা ম্যাপটোলগুলি ব্যবহার করে শেফফাইল থেকে পড়া যায়: রিডশেপস্পটিয়াল) থেকে বহুগুণ বৈশিষ্ট্যগুলি ওভারলে করতে 'এক্সট্র্যাক্ট' ব্যবহার করুন, তারপরে সংক্ষিপ্তসার জন্য 'টেবিল' ব্যবহার করুন। উদাহরণ:

> c=raster("cumbria.tif") # this is my CORINE land use raster
> summary(spd)
Object of class SpatialPolygonsDataFrame
[...]
> nrow(spd)  # how many polygons:
[1] 2
> ovR = extract(c,spd)
> str(ovR)
List of 2
 $ : num [1:542] 26 26 26 26 26 26 26 26 26 26 ...
 $ : num [1:958] 18 18 18 18 18 18 18 18 18 18 ...

সুতরাং আমার প্রথম বহুভুজটি 542 পিক্সেল এবং আমার দ্বিতীয়টি 958 কভার করে I

> lapply(ovR,table)
[[1]]

 26  27 
287 255 

[[2]]

  2  11  18 
 67  99 792 

সুতরাং আমার প্রথম বহুভুজটি 26 ম শ্রেণির 287 পিক্সেল এবং 275 শ্রেণির 255 পিক্সেল sum


দুর্দান্ত, প্রচেষ্টার জন্য অনেক ধন্যবাদ। আমি এটি চেষ্টা করে আবার রিপোর্ট করব :-)
কার্লিউ

6

আমি ফিরে রিপোর্ট করতে চেয়েছিলাম এবং আমি এখানে আছি। স্পেসডম্যানের সমাধানটি দুর্দান্ত কাজ করেছে এবং আমি আমার আকারের প্রতিটি বহুভুজের জন্য সমস্ত তথ্য রফতানি করতে সক্ষম হয়েছি। কারওর যেমন সমস্যা হয় ঠিক তেমন ক্ষেত্রে আমি এখানে আগে:

...
tab <- apply(ovR,table)
# Calculate percentage of landcover types for each polygon-field.
# landcover is a datastream with the names of every polygon
for(i in 1:length(tab)){
 s <- sum(tab[[i]])
 mat <- as.matrix(tab[[i]])
 landcover[i,paste("X",row.names(mat),sep="")] <- as.numeric(tab[[i]]/s)
}

3

আপনি যদি চান তা আমি যদি সঠিকভাবে বুঝতে পারি এবং ধরে নিচ্ছি যে আপনার গ্রাস জিআইএস ডাটাবেসে ভেক্টর স্তর 'মাইপলিগন্লেয়ার' এবং রাস্টার স্তর 'করিনা' ইতিমধ্যে রয়েছে:

প্রথমে আমি ভেক্টরকে রাস্টার হিসাবে রূপান্তর করব। বিড়ালটি নিশ্চিত করবে যে প্রতি বহুভুজ প্রতি আপনার এক অনন্য শনাক্তকারী থাকবে। আপনার যদি কোনও অনন্য সংখ্যাসূচক শনাক্তকারী সহ কলাম থাকে তবে আপনি সেই কলামটি পরিবর্তে ব্যবহার করতে পারেন। লেবেল কলামটি optionচ্ছিক:

v.to.rast ইনপুট = মাইপোলিগন্লেয়ার স্তর = 1 আউটপুট = মাইপোলিগনস ব্যবহার = বিড়াল লেবেলক্লোনম = নামম্যাপিংইউনিট

তারপরে আপনার পরিসংখ্যান পেতে r.stats চালান:

r.stats -a -l ইনপুট = মাইপলিগনস, করিনা বিভাজক =; আউটপুট = / হোম / পাওলো / corinastats.csv

শেষ পদক্ষেপটি হল Corinastats.csv উদ্বোধন করা, যেমন LibreOffice এবং পিভট টেবিল তৈরি করা বা আপনার ক্রস টেবিল তৈরি করতে আর ব্যবহার


3

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

  1. রাস্টার স্তরটিতে বহুভুজটি ক্লিপ করুন (রাস্টার → নিষ্কাশন → ক্লিপার: ইনপুট ফাইল = রাস্টার স্তর, আউটপুট নাম এবং অবস্থান চয়ন করুন, মুখোশ স্তরটিতে ক্লিক করুন, আপনাকে বহুভুজ বেছে নিন → ঠিক আছে)

  2. ক্লিপারাইজ ক্লিপার স্তরটি (রাস্টার → রূপান্তর → বহুভুজ: ইনপুট ফাইল = আপনার ক্লিপ স্তর, আউটপুট সংরক্ষণ করুন → ঠিক আছে)

  3. পিক্সেলের সংখ্যা গণনা করা (আপনি সবেমাত্র তৈরি আকারের ফাইলটিতে ক্লিক করুন - ওপেন ফিল্ড ক্যালকুলেটর: "নতুন ক্ষেত্র তৈরি করুন" টিক দিন এবং ক্ষেত্রের নাম, ফাংশন = জ্যামিতি → অঞ্চল → ঠিক আছে) যুক্ত করুন। পিক্সেলের সংখ্যার সংখ্যাটি দেখানো আপনার অ্যাট্রিবিউট টেবিলটিতে এখন আপনার একটি নতুন কলাম থাকা উচিত।

  4. বহুভুজ স্তর সংরক্ষণ করুন ( বহুভুজ স্তরকে ডান ক্লিক করুন, সংরক্ষণ করুন: ফর্ম্যাট = ডিবিএফ ফাইল, ঠিক আছে হিসাবে সংরক্ষণ করুন)

  5. প্রতিটি আবাসনের জন্য পিক্সেলের সংক্ষিপ্তসার (এক্সেল শুরু করুন, ফাইল খুলুন, যদি প্রতিটি শিরোনামের জন্য এখন আপনার শিরোনাম না থাকে, একটি খালি ঘরে ক্লিক করুন, ডেটা ট্যাবে পৌঁছেছেন, একত্রিত করুন, নিশ্চিত করুন যে এটি যোগফল রয়েছে, ক্লিক করুন “ব্রাউজ…” এর পাশের লাল তীর এবং আপনার দুটি কলাম নির্বাচন করুন (শিরোনামগুলি অন্তর্ভুক্ত), "যুক্ত করুন" ক্লিক করুন এবং "শীর্ষ সারি" এবং "বাম কলাম" বাক্স দুটি টিক করুন → ঠিক আছে)

  6. যদি আমার মতো, আপনার কাছে বিশ্লেষণ করার জন্য প্রচুর বহুভুজ থাকে এবং সেগুলি একই টেবিলে তুলনা করার প্রয়োজন হয় তবে এই পদক্ষেপটি সহায়ক হবে। একটি নতুন এক্সেল ওয়ার্কবুকে আপনার আবাস সংখ্যাটি কলাম এটিতে তালিকাবদ্ধ করুন (আমার জন্য 1 থেকে 48) এবং দুটি কলাম আপনি সবেমাত্র কলাম বি এবং সিতে সংহত করেছেন (বিতে আবাসস্থল এবং সি তে পিক্সেলের সংখ্যা) রাখুন place কক্ষ ডি 1 এ নিম্নলিখিত সূত্রটি লিখুন: = আইএফএনএ (আইএনডিএক্স (সি: সি; ম্যাচ (এ 2; বি: বি; 0)); "") এবং আপনার শেষ মানটির নীচে টানুন (বা নীচে ডানদিকে ডানদিকে ক্লিক করুন) আপনার D48 কক্ষে 48 টি আবাসস্থল রয়েছে)। পিক্সেল সংখ্যা এখন আপনার বাসস্থান সম্পর্কিত কোষে হয় এবং আপনি আপনার সমস্ত বহুভুজ জন্য এই প্রক্রিয়া পুনরাবৃত্তি করতে পারেন।


2

কিউজিআইএস ( রাস্টার> রূপান্তর> বহুভুক্ত ) ব্যবহার করে এবং তারপরে বহুভুজগুলির সাথে একত্রিত করার জন্য ইউনিয়ন ফাংশন ( ভেক্টর> জিওপ্রসেসিং সরঞ্জামসমূহ> ইউনিয়ন ) ব্যবহার করে সিউরিন ডেটা ভেক্টর বহুভুজ ডেটাसेटে রূপান্তর করার বিষয়ে। ফলস্বরূপ ভেক্টর ডেটাসেট প্রতিটি বহুভুতে প্রতিটি CORINE শ্রেণীর ক্ষেত্রগুলি ধারণ করে।


এই পরামর্শের জন্য ধন্যবাদ। ভেক্টর ইউনিয়ন সম্পর্কে এখনও ভাবেননি। হয়তো আমি চেষ্টা করব, যদি আর-প্রসেসিং কোনওভাবে ব্যর্থ হয়।
কার্লিউ

0

QGIS।

কিউজিআইএস ট্রাঙ্কে জোনালস্ট্যাটসের আরও একটি সংস্করণ পাওয়া যায়, এটি জোনাল স্ট্যাটিস্টিকস বলে।

এটি আপনার প্রয়োজনীয় ফাংশনটি সম্পাদন করে।

ওয়ার্কফ্লো সম্পর্কে, আমি কয়টি রাস্টার আপনার সম্পর্কে জানি না বা তারা কেবল একটি রাস্টারগুলিতে ব্যান্ড করছে?


মন্তব্যের জন্য ধন্যবাদ, তবে জোনাল পরিসংখ্যান কেবল বিভাগ ছাড়াই রাস্টার খায়। IAM QGIS ট্রাঙ্ক 1.9 ব্যবহার
Curlew

0

উপরের বেশিরভাগ উত্তরের বিরোধিতা করে, আমি যুক্তি দিয়ে বলব যে আপনার বহুভুজকে রাস্টেরাইজ করা এবং দুটি বহুভুজ ডেটাসেটের পরিবর্তে দুটি রাস্টার ডেটা-সেট নিয়ে কাজ করার চেয়ে ভাল বিকল্প। এটি প্রসেসিং নিবিড়ভাবে কম এবং ফলস্বরূপ আর-তে বড় বড় রেস্টার এবং বৃহত্তর বহুভুজ ফাইলগুলি প্রক্রিয়াজাত করার একমাত্র সমাধান কার্যকর করা সহজ is

সঠিক একই মাত্রা এবং রাস্টার ডেটার রেজল্যুশন আপনার বহুভুজ rasterizing করার পরে, আপনি সারসংক্ষেপ পরিসংখ্যান যেমন ব্যাখ্যা সারসংক্ষেপ পারেন এখানে , যা উপযুক্ত মেমরিতে আপনার রাস্টার তড়কা (ছোট / মাঝারি রাস্টার স্তর) অথবা আপনার সাথে প্রতিটি বিভাগের binarize করতে পারেন reclassফাংশন এবং zonalপ্রতিটি শ্রেণীর জন্য পরিসংখ্যান গণনা চেয়ে । এখানে একটি সমাধান যা রাস্টেরাইজেশন এবং জোনাল পরিসংখ্যানগুলিকে একটি ফাংশনে অন্তর্ভুক্ত করে এবং খুব বড় ডেটাসেটের সাথে দুর্দান্ত কাজ করে।

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