জিডিএল ব্যবহার করে বিদ্যমান জিওটিফটিতে ব্যান্ড যুক্ত করা হচ্ছে?


15

দেখে মনে হচ্ছে এটি সোজা হওয়া উচিত তবে আমার জীবনের পক্ষে এটি বের করা যায় না।

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


হাই @ ওক্স, আমারও একই সমস্যা আছে। আমি এলডিসিএম একক ব্যান্ডের 2,3,4 ব্যান্ড থেকে একটি সমন্বিত চিত্রের রঙ তৈরি করতে চাই। আপনার প্রশ্নের সমাধান কি আপনার এখনও আছে?
জ্যাকি

1
@ জ্যাকি ভিআরটি ড্রাইভারকে একটি অনুলিপি তৈরি করতে, একটি ব্যান্ড যুক্ত করতে, এবং তারপরে জিওটিফ ড্রাইভারের সাথে জিওটিফের পিছনে একটি অনুলিপি তৈরি করার বিষয়ে গৃহীত উত্তরে কাইলের মন্তব্য দেখুন।
TheOx

উত্তর:


8

সমাধানটি, যদি ড্রাইভার এটিকে সমর্থন করে, GA_Update অ্যাক্সেসের সাথে GDALOpen () কল করতে হয় তবে GDALAddBand বা GDALDataset :: অ্যাডব্যান্ড ব্যবহার করুন । তবে জিওটিফ ড্রাইভার অ্যাডব্যান্ড সমর্থন করে না।


2
খুব অল্প সংখ্যক ড্রাইভারই অ্যাড ব্যান্ড সমর্থন করে, আমি বিশ্বাস করি না যে জিওটিফ ড্রাইভারটি করেন। আমি কেবল জানি যে এটি সমর্থন করে তা হ'ল ভিআরটি।

ঠিক আছে @ কাইল ঠিক বলেছেন - জিওটিফ ড্রাইভার অ্যাডব্যান্ড সমর্থন করে না, তবে এই উত্তরের পদ্ধতিটি সঠিক যদি ড্রাইভার সমর্থন করে এবং আমি যা খুঁজছিলাম তা তাই আমি গ্রহণ করছি।
TheOx

ডোহ! ছোট্ট বিস্তারিত সম্পর্কে ভুলে গেছেন। @ ওক্স আমি মনে করি না যে আপনি আমার উত্তরটি সঠিকভাবে গ্রহণ না করে গ্রহণ করবেন। উত্স প্রশ্ন যা বিশেষত জিওটিফগুলির সাথে সম্পর্কিত।
ব্যবহারকারী2856

@ লুক: আপনার উত্তরটি সম্পাদনা করুন যদি এটি চালকের পক্ষে সমর্থন করে এবং আমি এটি গ্রহণ করি তবে এটিই সাধারণ সমাধান। আমার আসল প্রশ্নে জিওটিফের পদ্ধতির সংক্ষিপ্তসার করার জন্য এটি করার অন্য কোনও উপায় নেই বলে মনে হয়।
TheOx

1
জিওটিফ ড্রাইভার সহ ভিআরটি ড্রাইভার, ক্রিয়েটকপি (), অ্যাডব্যান্ড (), ক্রিয়েটকপি () ব্যবহার করুন।

8

লুকের উত্তরটি প্রসারিত করতে এবং পাইথনে একটি কংক্রিটের উদাহরণ দেওয়ার জন্য, এখানে একটি স্নিপেট রয়েছে যা উত্স রাস্টারটিতে একটি আলফা ব্যান্ড যুক্ত করে এবং এটি পিএনজি হিসাবে সংরক্ষণ করে।

from osgeo import gdal

src_ds = gdal.OpenShared(input_path)
mask_ds = gdal.OpenShared(mask_path)
mask = mask_ds.GetRasterBand(1).ReadAsArray()

tmp_ds = gdal.GetDriverByName('MEM').CreateCopy('', src_ds, 0)
tmp_ds.AddBand()
tmp_ds.GetRasterBand(4).WriteArray(mask)

dst_ds = gdal.GetDriverByName('PNG').CreateCopy(output_path, tmp_ds, 0)
del dst_ds

পরেরটি যেহেতু সমর্থন করে না এবং এর MEMপরিবর্তে আমি ড্রাইভারটি ব্যবহার করেছি (ত্রুটি "ভিআরটিসোর্সড্রাস্টারব্যান্ডের মাধ্যমে লেখা সমর্থনযোগ্য নয়" ")। আমার ধারণা, ভিআরটি ড্রাইভার ব্যবহার করা অন্য কিছু পদ্ধতির মাধ্যমে এখনও সম্ভব হতে পারে।VRTWriteRaster()WriteArray()

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