বহুভুজ জন্য রাস্টার পরিসংখ্যান গণনা কিভাবে?


14

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

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

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

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

সাগা-গিসের সত্যিই অনেকগুলি মডিউল রয়েছে। এই অ্যাপ্লিকেশনটির জন্য কোনটি সঠিক তা দয়া করে আমাকে জানান।


আমি রুডিভনস্টাডেনের সমাধানটি চেষ্টা করছি, এবং আমি যখন শেষ দুটি কমান্ড প্রবেশ করি তখন নিম্নলিখিত ত্রুটি বার্তাগুলি উপস্থিত হয়: >>> জোনালস্ট্যাটস = কিগিস.অ্যানালাইসিস.কিউজস জোনালস্ট্যাটিক্স (ভেক্টর্লেয়ার, রাস্টারফিল) ট্রেসব্যাক (সর্বশেষতম কল): ফাইল "<ইনপুট>" , লাইন 1, <মডুল> অ্যাট্রিবিউটআররে: 'মডিউল' অবজেক্টের কোনও বিশ্লেষণ নেই 'বিশ্লেষণ' >>> জোনালস্ট্যাটস.ক্যালকুলেটস্ট্যাটিস্টিক্স (কোনওটি নয়) ট্রেসব্যাক (সর্বশেষতম কল): ফাইল "<ইনপুট>", লাইন 1, <মডিউলটিতে > নেম এরির: নাম 'জোনালস্ট্যাটস' সংজ্ঞায়িত করা হয়নি আমি ভাবছি আজ্ঞাগুলি সঠিক কিনা বা আমি যে রাস্টার ফাইলটি ব্যবহার করছি তা সঠিক ফর্ম্যাটে আছে কিনা? ধন্যবাদ!
ড্যান ওল্ফ

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

আপনার মন্তব্যের জন্য ধন্যবাদ, ড্যান। আমার উত্তরে একটি প্রয়োজনীয় আমদানি বিবৃতি অনুপস্থিত ছিল, যা এখন ঠিক করা উচিত।
rudivonstaden

উত্তর:


22

আমি ঠিক একই কাজ করার জন্য লড়াই করে যাচ্ছিলাম, কিন্তু বিভিন্ন কারণে আমি কিউজিআইএস ব্যবহার করতে প্রতিশ্রুতিবদ্ধ। আমি জিআরএসএস প্লাগইন ব্যবহার করে এবং সিক্সেন্টেট প্লাগইন ব্যবহার করে v.rast.stats ব্যবহার করার চেষ্টা করেছি। পরবর্তী পদ্ধতিটি ব্যর্থ হয়েছে, কারণ মনে হয় এটি একটি অস্থায়ী ভেক্টর স্তরের সাথে পরিসংখ্যানগুলি সংযুক্ত করে যা এটি পরে মুছে ফেলা হয়। জিআরএসএস প্লাগইনটি কাজ করেছে তবে এটি বহুভুজকে ওভারল্যাপিংয়ের সাথে ডিল করে না।

কিছুটা খনন করার পরে (আশাব্যঞ্জক-সাউন্ডিং জোনালস্ট্যাটস প্লাগইনটির উত্সে), আমি দেখতে পেলাম যে কিউজিআইএসের আসলে এপিআইতে জোনাল পরিসংখ্যান পদ্ধতি রয়েছে, এবং এগুলির মধ্যে পাইথন বাইন্ডিং রয়েছে। তাই যতদিন না পর্যন্ত আপনি শুধুমাত্র খুঁজছেন যেমন count, sumএবং meanআপনার বহুভুজ বৈশিষ্ট্যগুলির জন্য পরিসংখ্যান, পাইথন কনসোল (প্লাগইন> পাইথন কনসোল) বর্তমানে বহুভুজ অ্যাট্রিবিউট টেবিলে পরিসংখ্যান সংযুক্ত করতে সবচেয়ে সহজ উপায়।

  1. TOC- এ আপনার রাস্টার স্তরটি নির্বাচন করুন এবং কনসোলে নিম্নলিখিতটি লিখুন (এটি আপনার রাস্টার স্তরটির উত্স ফাইলের নামটি ধরে ফেলে)

    >>> rasterfile = qgis.utils.iface.mapCanvas().currentLayer().source()

  2. আপনার ভেক্টর স্তরটি নির্বাচন করুন, এবং কনসোলে নিম্নলিখিত কমান্ডটি কার্যকর করুন (এটি ভেক্টর স্তরটি নিজেই ধরবে)

    >>> vectorlayer = qgis.utils.iface.mapCanvas().currentLayer()

  3. কনসোলে নিম্নলিখিত তিনটি কমান্ড কার্যকর করুন (তারা ভেক্টর স্তর এবং রাস্টার ফাইলকে QGIS এর অন্তর্নির্মিত জোনাল পরিসংখ্যান ক্যালকুলেটরে পাস করুন)

    >>> import qgis.analysis

    >>> zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile)

    >>> zonalstats.calculateStatistics(None)

বহুভুজ স্তরের অতিরিক্ত ক্ষেত্র হিসাবে ফলাফল যুক্ত করা হবে।

আঞ্চলিক পরিসংখ্যান

মনে রাখবেন যে আপনি যদি নতুন ক্ষেত্রগুলিতে একটি উপসর্গ যুক্ত করতে চান (কেবলমাত্র তাদের যোগফল, গড় এবং গণনা বাদ দিয়ে), তবে আপনি নিম্নলিখিত পদক্ষেপটি 3 ধাপে প্রথম কমান্ডটি প্রতিস্থাপন করবেন (ধরে নিবেন যে আপনি 'জোনাল_' ব্যবহার করতে চান উপসর্গ:

>>> zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile,"zonal_")

1
+1 কিগিস.অ্যানালাইসিস.কিউজেস জোনাল স্ট্যাটিসটিক্স ()
হারুন

কিউজিআইএস-এ জোনাল স্ট্যাটিস্টিক্স প্লাগইন রয়েছে, সুতরাং সম্ভবত নিজের দ্বারা উল্লিখিত কমান্ডগুলি সম্পাদন করার প্রয়োজন হবে না: ডকস.কিগিস.আরসি / ২.২ / এএন / ডকস / ইউজার_মানুয়াল /প্লাগিনস_।আমি অবাক, কেন সর্বোচ্চ এবং সর্বনিম্ন গণনা করার কোনও সম্ভাবনা নেই? মানও।
13

আমি আপনার কৌশলটি ব্যবহার করেছি তবে এটি কিছু বহুভুজ মুছে
ফেলেছে

6

পরিশেষে এটি খুঁজে পেয়েছে: সাগা-জিআইএসে ওপেন বিভাগ-বহুভুজ এবং ডেটা-গ্রিড, তারপরে আকার-> গ্রিড-> গ্রিড মান-> বহুভুজগুলির জন্য গ্রিডের পরিসংখ্যান


3

পোস্টজিআইএস দিয়ে আপনি এটি বেশ সহজেই করতে পারেন। এই টিউটোরিয়ালটি দেখুন: http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01


এইচএডএক্স ধারণাটির জন্য for আমি অন্য একটি সফ্টওয়্যার যোগ না করে এবং শিখতে না করে এটি সম্পন্ন করার আশা করছিলাম। আমি পোস্টজিআইএস পরে মনে রাখব।
stn

3

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

রুডিভনস্টাডেনের দ্বারা বর্ণিত কিউজিআইএস পদ্ধতিটি টিমের জন্য ধন্যবাদ, কবজির মতো কাজ করেছিল। তবে, আমার ক্ষেত্রে আমি ন্যূনতম ও সর্বাধিক মানগুলিও জানতে চেয়েছিলাম এবং আমার বহুভুজগুলির মধ্যে রাস্টার মানগুলি এবং এই কার্যকারিতাটি আমি কিউজিআইএস-তে খুঁজে পাইনি। আমি ফাংশন মাধ্যমে একটি সমাধান পাওয়া isectpolyrst মধ্যে GME , যা আমার শুধু পরিসংখ্যান আমার প্রয়োজন এবং বরং দ্রুত হিসাবে ভাল দিলেন জিআইএস সমস্যার with.This ফাংশন সমাধানের জন্য আমার এক প্রিয়।

পুনশ্চ. GME এর কিছুটা দুর্ভাগ্য নির্ভরতা (আরকজিআইএস) রয়েছে। সুতরাং যদিও প্রোগ্রামটি নিজেই অবাধে সবার জন্য উপলব্ধ, এটি চালানোর জন্য আপনার আর্কজিআইএস প্রয়োজন। তবে আপনার কাছে যদি আর্কজিআইএস (লাইসেন্সের কোনও স্তর) থাকে তবে আমি আপনাকে এটি ব্যবহার করে দেখার পরামর্শ দিই।

সম্পাদনা করুন:

আমি যে পরিসংখ্যানগুলি চেয়েছিলাম তা পেয়েছি, কিন্তু পরে আমি জানতে পেরেছিলাম যে আসল সংখ্যাগুলি দেখার পরে আমি কিছুটা তাড়াহুড়ো করে সিদ্ধান্তে ঝাঁপিয়েছি। আপনি পরিসংখ্যান পাবেন, হ্যাঁ, তবে কেবল একজন রাস্টার প্রথম ব্যান্ডের জন্য। সুতরাং আপনি যদি 3-ব্যান্ডের রাস্টার চিত্র নিয়ে কাজ করেন তবে পরিসংখ্যান অসম্পূর্ণ। আমার মূল পোস্টে চ্যানেলগুলির সংখ্যা উল্লেখ করা উচিত ছিল। উপরে প্রস্তাবিত স্ট্যানের মতো সাগা-জিআইএস ব্যবহার করার জন্য সেরা যদি আপনার মাল্টি ব্যান্ড রাস্টার চিত্রগুলির সাথে কাজ করা হয়।


3
zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile)
zonalstats.calculateStatistics(None)

ডিফল্ট হিসাবে গণনা করে কেবল গণনা, যোগফল এবং গড় ( Raster -> Zonal Statisticsআপনি কিউজিআইএস ডেস্কটপ থেকে বলতে পারেন , এটি আরও অনেক কিছু করতে পারে)।

আপনি যদি উদাহরণস্বরূপ, আপনার কেবলমাত্র গড়টি গণনা করতে চান:

zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer, rasterfile, QgsZonalStatistics.Mean)
zonalstats.calculateStatistics(None)

সমস্ত বিকল্পের জন্য API দেখুন ।

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