নোডাটা পিক্সেলের কারণে রাস্টারদের যোগফল অসম্ভব


12

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

আমি যা করতে চাই তা হ'ল প্রতিটি রাস্টারের মানগুলি যোগ করা। তবে, মনে হয় যে প্রতিবার কোনও নোডাটা পিক্সেল যোগ হয়, ফলস্বরূপ পিক্সেলটি সরাসরি নোডাটা হিসাবে শ্রেণীবদ্ধ করা হয়। আমি এর বিপরীতটি চাই: সমস্ত নোডা মানগুলিকে উপেক্ষা করে বাকিগুলি সংক্ষিপ্ত করে।

আমি সমস্যাটি সমাধানের 2 টি উপায় সম্পর্কে ভেবেছিলাম:

  1. নোডাটার মানগুলিকে উপেক্ষা করে রাস্টারদের যোগফল
  2. নোডাটা পিক্সেলকে 0 মান রূপান্তর করুন, তারপরে সমস্ত রাস্টারদের যোগফল দিন

এখানে চিত্র বর্ণনা লিখুন

দুর্ভাগ্যক্রমে, আমি এটি করার কোনও সরঞ্জাম পাই না।

আমাকে কি কেউ সাহায্য করতে পারবেন?


আমি আশ্চর্য হয়েছি যে ফলাফলটি কীভাবে ব্যাখ্যাযোগ্য হবে: সর্বোপরি, অঙ্কগুলি অনুপস্থিত দিনের জন্য মূল্যগুলি অন্তর্ভুক্ত করবে না, নির্দেশ করে যে তারা নিখোঁজ তথ্যের পরিমাণের উপর নির্ভর করে বিভিন্ন পরিমাণে পক্ষপাতদুষ্ট কম হবে। যদি ডেটা অনুপস্থিত কোন উপলব্ধিজনক পরিমাণ হয়, তাহলে আপনি যদি এর পরিবর্তে বিবেচনা করা উচিত আরোপিত হিসাবের বা পূর্বাভাসের অনুপস্থিত কোষ এ মূল্যবোধ ও তারপর সমষ্টি অনুষ্ঠানে যোগ দেন।
হোবার

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

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

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

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

উত্তর:


1

আপনার যদি আর্কজিআইএসে অ্যাক্সেস থাকে তবে সেল স্ট্যাটিস্টিক্স সরঞ্জামটিতে নোডাটা উপেক্ষা করার বিকল্প রয়েছে যা আপনি যোগ করেছেন \ গড় \ মিনিট \ আপনার রেস্টারদের সর্বোচ্চ।


আপনি যদি এই উত্তরটি "গড়" দ্বারা "যোগফল" প্রতিস্থাপন করতে পরিবর্তন করেন তবে এটি সঠিক হবে: কারণ হিসাবে প্রশ্নের মন্তব্য থ্রেডটি দেখুন।
হোবার

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

11

প্রথমত, আপনি gdal_calc.py ব্যবহার করে All -9999 থেকে 0 পরিবর্তন করতে এবং NoData মান 0 তে সেট করতে পারেন।

এই ক্ষেত্রে:

gdal_calc.py -A input.tif --outfile=input_with_NoData.tif --calc="A+9999*(A==-9999)" --NoDataValue=0

তারপর, আপনি NoData মান ব্যবহার উপেক্ষা করতে পারেন gdal_translate সঙ্গে -a_nodata দ্বারা অনুসরণ বিকল্প কেউই

-a_nodata মান :

আউটপুট ব্যান্ডগুলিতে একটি নির্দিষ্ট নোডাটা নির্ধারণ করুন। GDAL 1.8.0 দিয়ে শুরু করে, উত্স ফাইলে উপস্থিত থাকলে আউটপুট ফাইলে নোডাটা মান সেট করা এড়াতে কারও পক্ষে সেট করা যায় না

উদাহরণ:

gdal_translate -a_nodata none input_with_NoData.tif output_without_NoData.tif

বখশিশের জন্য ধন্যবাদ. আমি -a_nodata প্যারামিটারের সাহায্যে কিছুটা খেললাম এবং আমি NULL এর পরিবর্তে -9999 এর মানটি পরিচালনা করতে পারি। তবে, আমার এখনও সমস্ত -৯৯৯৯ পিক্সেল 0
ড্যামিয়েন

1
আপনি gdal_calc.py ব্যবহার করতে পারেন আবেদনের আগে সমস্ত -9999 থেকে 0 পরিবর্তন করতে gdal_translate -a_nodata none ...। উদাহরণস্বরূপ: gdal_calc.py -A input.tif --outfile=input_with_NoData.tif --type=Int16 --calc="A+9999*(A==-9999)" --NoDataValue=0
আন্তোনিও ফ্যালকিয়ানো

আমি বেশ কয়েকটি কমান্ড চেষ্টা করেছি, তবে আমি সত্যিই ভাবি gdal_calc.py নিয়ে আমার সমস্যা আছে। উদাহরণস্বরূপ, আমি কেবল পুরো রাস্টারটিতে ( i.imgur.com/WiZG7MC.png ) 1 টি যুক্ত করার চেষ্টা করেছি এবং আমি এই ম্যাক্স্রিপিট ত্রুটিটি পেয়েছি। আমি বুঝতে পারি না, আমি ওএসজিও শেল থেকে সরাসরি কমান্ডটি চালিয়েছি এবং শেলটি ( i.imgur.com/fgtMZQZ.png ) খোলার পরে তালিকায় উপস্থিত হওয়ার পরে এই মডিউলটি সঠিকভাবে ইনস্টল করা হয়েছে বলে মনে হচ্ছে । আমার ইনস্টলটি কি ভেঙে গেছে?
ড্যামিয়েন

এটি একটি রেজেক্স সমস্যার মতো মনে হচ্ছে ... cdকমান্ডটি ব্যবহার করে আপনার ওয়ার্কিং ডিরেক্টরিটি পরিবর্তন করার চেষ্টা করুন এবং কেবল থাকার জন্য আবার চেষ্টা করুন -A test.tif
আন্তোনিও ফ্যালকিয়ানো

1
এটি আমার পক্ষে কাজ করে তবে আমি OSGeo4W ইনস্টলারটির মাধ্যমে এই সমস্ত জিনিস ইনস্টল করেছি । পরিবর্তে, আমি দেখতে পাচ্ছি যে আপনি স্ট্যান্ডেলোন ইনস্টলারের মাধ্যমে কিউজিআইএস ইনস্টল করেছেন। সুতরাং আপনার সেটআপটি রিফ্রেশ / আপডেট করার চেষ্টা করুন।
আন্তোনিও ফ্যালকিয়ানো

5

আর তে:

library(raster)
s <- stack('file1', 'file2', ...)
ss <- sum(s, na.rm=TRUE)

আপনি এই কোডটির একটি ব্যাখ্যা (যদি আপনি এটি লিখেছিলেন) বা সাইটটি থেকে একটি সংক্ষিপ্ত সংক্ষিপ্তসার সহ আপনি এটি কোথায় পেয়েছেন তার একটি লিঙ্ক যুক্ত করতে পারেন?
পল

1
উপরের প্রথমটি রাস্টার প্যাকেজটি লোড করে, তারপরে একটি "স্ট্যাক" তৈরি করে (অভিন্ন মাত্রা এবং রেজোলিউশনের রাস্টার ফাইলগুলির একটি ত্রি-মাত্রিক অ্যারে, যেখানে প্রতিটি ফাইল এই স্ট্যাকের একটি টুকরো হয়ে যায়) কমা-বিচ্ছিন্ন ফাইলের নাম দ্বারা নির্দেশিত ফাইলগুলি নিয়ে গঠিত । চূড়ান্ত লাইনটি স্ট্যাকের সমস্ত স্লাইসগুলিতে সেল-ওয়াইজ পরিমান সম্পাদন করে s, যুক্তিটির na.rm=TRUEফলে NAমানগুলি উপেক্ষা করা হয়। আউটপুট অবজেক্ট ssএমন একটি rasterবস্তু যা writeRaster(দেখুন ?writeRaster) দিয়ে রফতানি করা যায় । (@ রবার্টএইচ আর rasterপ্যাকেজটির স্রষ্টা ))
জবাআমস

1

স্থানিক বিশ্লেষকের শর্তসাপেক্ষ সরঞ্জাম নাল মানগুলিকে শূন্যে রূপান্তর করার একটি সহজ উপায়। তারপরে অঙ্কগুলি গ্রহণ করা উচিত একটি স্ন্যাপ।


ধন্যবাদ তোমার উত্তরের জন্য. আমি এই পোস্টটি অনুসরণ করেছি: সমর্থন.esri.com/fr/ ज्ञानজ্ঞবেস / তৃতীয় / ডেটাইল / 34932 এবং সমস্ত নাল পিক্সেলকে 0 এ রূপান্তর করতে সক্ষম হয়েছি, তবে আমি সমস্ত রেস্টারদের জন্য এই অপারেশনটি করতে সক্ষম হতে পছন্দ করতাম ডিরেক্টরি। কিউজিআইএস-এর 'পুনরায় শ্রেণিবদ্ধ গ্রিড মানগুলি' এটি করতে সক্ষম হতে পারে বলে মনে হয় তবে এটি কীভাবে কাজ করে তা আমি জানি না। আমি "সারণী সারণী" পদ্ধতিটি বেছে নিয়েছি এবং 0 টি নালায় সেট করতে বলি, এবং অন্যান্য মান পরিবর্তন করি না, তবে ফলাফল প্রাপ্ত রাস্টারটি -0.99 থেকে 0.08 পর্যন্ত হয় যদিও এটি মূলত 428 থেকে 3491 পর্যন্ত ছড়িয়ে পড়ে
ড্যামিয়েন

আপনি কি কোথাও আপনার আসল রাস্টারটির একটি অংশ পোস্ট করতে পারেন, যাতে আমরা এক নজর দেখতে পারি?
til_b

2
আপনি যদি সরঞ্জামটিতে ডান ক্লিক করেন তবে আপনি যতটা ফাইল চান একটি ব্যাচ প্রক্রিয়া চালাতে পারবেন, যেমন একটি সম্পূর্ণ ডিরেক্টরি।
ব্রুক

আপনার উত্তরের জন্য ধন্যবাদ. তবে আমি 'স্থানিক বিশ্লেষক / মানচিত্র বীজগণিত / রাস্টার ক্যালকুলেটর' ব্যবহার করে একটি ফাইলের জন্য সমস্ত NULL গুলি 0 তে রূপান্তর করতে পারি। আমি যদি এই সরঞ্জামটিতে ডান ক্লিক করি তবে আমি একটি ডিরেক্টরি ব্যাচ করতে পারি, তবে প্রতিটি ফাইল স্বয়ংক্রিয়ভাবে বিবেচনায় নেওয়ার জন্য সিনট্যাক্সটি কী হবে? ( i.imgur.com/aYaUCzz.png )
ড্যামিয়েন

আমি 'স্থানিক বিশ্লেষক / পুনঃচলাচল / পুনরায় শ্রেণিবদ্ধকরণ' সরঞ্জামটি দেখেছি এবং এটি আমি যা চাই ঠিক তা করে। একবারে একাধিক ফাইল প্রক্রিয়া করার জন্য আমি ব্যাচ উইন্ডোটি ব্যবহার করতে সক্ষম হয়েছি। আমার একটি শেষ সমস্যা আছে: আমি যদি 'আউটপুট রাস্টার' ডান ক্লিক করি / পূরণ করি তবে এটি সমস্ত ইনপুট রাস্টারদের জন্য একই আউটপুট ফাইলগুলি অনুলিপি করে। প্রতিটি ইনপুটটির জন্য এটির আলাদা আউটপুট তৈরি করতে আমি কীভাবে করব? ( i.imgur.com/jzTI2x9.png )
ড্যামিয়েন

1

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

কিউজিআইএস-এ নোডাটা মানগুলির প্রদর্শন সম্পর্কে একটি নোট যেমন: নোডা মানগুলি সর্বদা মানচিত্রের উইন্ডোতে নোডাটা মান হিসাবে প্রদর্শিত হয় এবং "অবজেক্ট তথ্য" সরঞ্জামটি ব্যবহার করার পরে, তাদের মান -9999, 0, NULL ইত্যাদি আছে কিনা তা বিবেচনা করে না no সুতরাং নোডাটা মানগুলি 0-তে পুনরায় শ্রেণিবদ্ধকরণের পরে, আপনি যদি স্তর বিন্যাসে যান তবে আপনি মেটাডেটা দেখতে পাবেন যে নোডাটার মান 0 রয়েছে।

অবশেষে আমি অনুসন্ধানের জন্য নিখুঁত সরঞ্জামটি পেয়েছি, গ্রাস r.series। "সামগ্রিক অপারেশন" সেটিংস "সর্বাধিক" এবং "প্রচারিত ন্যুআলএল" চেক না করে, সরঞ্জামটি আপনার প্রয়োজনীয়তা অনুসারে একটি স্তর তৈরি করবে।


0

আমার মনে আছে কিছুক্ষণ আগে এই সমস্যা হচ্ছে। সমাধান হিসাবে আমি মনে করি যে আমি রাস্টারগুলির সমস্ত কক্ষে +1 করেছি, রাস্টারদের একসাথে যুক্ত করেছি, তারপরে একটি চূড়ান্ত বিয়োগ (যদিও আপনি যুক্ত করেছেন এমন আরও অনেক +1) করেছেন। এটি বেশ অপরিশোধিত তবে যদি কাজটি হয়ে যায় ...!

বিকল্পভাবে, আপনার নাল মানগুলিকে শূন্যে রূপান্তর করতে QGIS এর প্রসেসিং সরঞ্জামবাক্সে 'পুনরায় শ্রেণিবদ্ধ গ্রিড মানগুলি' ব্যবহার করুন।


হাই, আমি কোনও সাফল্য ছাড়াই 'পুনরায় শ্রেণিবদ্ধ গ্রিড মান' সরঞ্জামটি ব্যবহার করার অনেকগুলি উপায় চেষ্টা করেছি। আমি একটি রাস্টার থেকে শুরু করেছি যেখানে আমি সমস্ত NULL পিক্সেলকে -9999 এ রূপান্তর করেছি। আমি [0] একক পদ্ধতিটি ব্যবহার করে পুনরায় শ্রেণিবদ্ধ করার চেষ্টা করেছি এবং 'পুরাতন মান = -9999', 'নতুন মান = 0.0', 'অপারেটর: [0] =' সেট করেছি, তবে যা কিছু পেয়েছি তা 'নান' দিয়ে পূর্ণ পিক্সেল। আমি কি ভুল করছি?
ড্যামিয়েন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.