জিডিএল ব্যবহার করে পাইথনটিতে স্মুথিং / ইন্টারপোলটিং রাস্টার?


20

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

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

রাস্টারাইজ লাইয়ার ব্যবহারের পরে আমার যা আছে:

[Gdal.rasterizelayer ব্যবহার থেকে রাস্টার]

আমি একটি চূড়ান্ত পণ্য জন্য কি চান:

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

আমি বিশ্বাস করি যে ফাংশনটি আমি সন্ধান করছি সেটি আরকিগিসিপিটিং আমদানি থেকে 'স্প্লাইন_এসএ ()' নামে পরিচিত।

জিডএল এর কি একই রকম ফাংশন রয়েছে, বা আমার কাঙ্ক্ষিত আউটপুট পাওয়ার জন্য আলাদা পদ্ধতি আছে?

উত্তর:


18

আমি NumPy এবং Scipy কটাক্ষপাত করা থাকব - সেখানে বিন্দু ডাটা প্রক্ষেপক একটি ভাল উদাহরণ আছে SciPy Cookbook ব্যবহার scipy.interpolate.griddata ফাংশন। স্পষ্টতই এর জন্য প্রয়োজন একটি অসাধারণ অ্যারেতে আপনার ডেটা রয়েছে;

  • জিডিএল অজগর বাইন্ডিং ব্যবহার করে আপনি gdal.Dataset.ReadAsArray()রাস্টার ব্যবহার করে পাইথনে আপনার ডেটা পড়তে পারেন ।
  • ওজিআর দিয়ে আপনি বৈশিষ্ট্য স্তরটি এবং শেফফাইল থেকে পয়েন্ট ডেটা বের করার মাধ্যমে লুপ করবেন (বা আরও ভাল, শেফফিলটি সিএসভিতে GEOMETRY=AS_XYZ[ ওজিআর সিএসভি ফাইল ফর্ম্যাট দেখুন] এবং সিএসভি পাইথনে পড়ুন) ব্যবহার করে লিখুন।

একবার গ্রিডড আউটপুট পেয়ে গেলে আপনি পরে জিড্ডাল ব্যবহার করে ফলস্বরূপ ছদ্মবেশী অ্যারে লিখতে পারেন ra

সবশেষে, যদি স্কিপি ইন্টারপোলেট লাইব্রেরিটির সাথে আপনার ভাগ্য না থাকে তবে আপনি সর্বদা স্কিপি.অ্যান্ডিমেজ চেষ্টা করতেও পারেন


সাহায্যের জন্য ধন্যবাদ! আমি Scipy.interplate.griddata ঘূর্ণি প্রদান করছি। আমি আমার ফলাফল পোস্ট করব।
ডগ

1
এই পোস্টে ফিরে আসতে আমি এত দীর্ঘ সময় নেওয়ার জন্য ক্ষমা চাইছি। উপরের উত্তরটি মূলত আমার সমস্যাটি সমাধান করার জন্য আমি কী করেছি। আমি সেই নোডাটা জায়গাগুলি পূরণ করার জন্য স্কিপি ইন্টারপোলেট লাইব্রেরি ব্যবহার করেছি এবং তারপরে এটিকে আবার রাস্টারব্যান্ডে লিখেছিলাম। সাহায্য বলছি জন্য ধন্যবাদ!
ডগ

@ ডগ কোন উদ্বেগ নেই - হেল্প খুশি!
ওমেনার্স

1
এই সমাধানটি কত দ্রুত? এটি কি 10k এক্স 10 কে গ্রিডের জন্য ব্যবহার করা যেতে পারে যেখানে কেবল প্রতি 100x100 মূল্য পরিচিত? আমি gdal_fillnodata চেষ্টা করেছি যা যে কোনও ইন্টারপোলেশনের তুলনায় অবিশ্বাস্যরূপে দ্রুত তবে এটি খুব কম স্পষ্ট পয়েন্টের জন্য ভাল কাজ করে না। এই মুহুর্তে আমি সাগা থেকে ত্রিভুজ ব্যবহার করছি তবে এটি মাঝারি অ্যারেগুলির জন্য খুব ধীর এবং বড়গুলির সাথে ব্যর্থ।
মিরো

12

কটাক্ষপাত আছে GDAL gridding এপিআই । পাইথন বাইন্ডিংগুলিতে এটি উন্মুক্ত হয়েছে কিনা তা আমি জানি না, তবে তা না হলে আপনি সাবড্রাক্স মডিউলটির মাধ্যমে কল করুন gdal_grid ইউটিলিটি ।

জিডিএল গ্রিড এপিআই কেবল বিপরীত দূরত্ব ওজন, চলন গড় এবং নিকটবর্তী নিকটবর্তী অঞ্চল ব্যবহার করে, এটি স্প্লাইজগুলি কার্যকর করে না। অন্য বিকল্প হ'ল স্কিপি ব্যবহার করা ।


1

এই থ্রেডটির থেকে কিছুটা পুরানো তবে আমি একটি সাধারণ মডিউল লিখেছি যা স্ক্লের্ন থেকে কেএনএন অ্যালগরিদম ব্যবহার করে যার নাম স্কেস্পটিয়াল।

https://github.com/rosskush/skspatial

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

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